Catch up on everthing we announced at this year's Firebase Summit. Learn more

Yahoo ve C++ Kullanarak Kimlik Doğrulama

Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'yı kullanarak web tabanlı genel OAuth Login'i uygulamanıza entegre ederek, kullanıcılarınızın Yahoo gibi OAuth sağlayıcılarını kullanarak Firebase ile kimlik doğrulamasını sağlayabilirsiniz. Bu akış, telefon tabanlı Firebase SDK'larının kullanılmasını gerektirdiğinden yalnızca Android ve Apple platformlarında desteklenir.

Sen başlamadan önce

  1. C ++ projeye Firebase ekleyin .
  2. In Firebase konsoluna , Auth bölümünü açın.
  3. Yöntem sekmesinde İşaret Üzerine, Yahoo sağlayıcı sağlar.
  4. Sağlayıcı yapılandırmasına o sağlayıcının geliştirici konsolundan İstemci Kimliği ve İstemci Sırrı ekleyin:
    1. Bir Yahoo OAuth istemcisi kaydetmek için, Yahoo geliştirici belgeleri izleyin Yahoo ile bir web uygulaması kaydedilirken .

      : İki OpenID Bağlan API izinlerini seçtiğinizden emin olun profile ve email .

    2. Bu sağlayıcılar ile uygulamaları kaydederken, kayıt emin olun *.firebaseapp.com uygulamanız için yönlendirme alanı olarak projeniz için domain.
  5. Kaydet seçeneğini tıklayın.

Erişim firebase::auth::Auth sınıfını

Auth sınıfı tüm API çağrıları için kapıdır.
  1. Auth ve App başlık dosyalarını ekleyin:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Senin başlatma kodunda, bir oluşturmak firebase::App sınıfı.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Edinme firebase::auth::Auth sizin için sınıf firebase::App . Arasında bire-bir eşleme vardır App ve Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Firebase SDK ile oturum açma akışını yönetin

Firebase SDK ile oturum açma akışını yönetmek için şu adımları izleyin:

  1. Bir örneğini Construct FederatedOAuthProviderData Yahoo sağlayıcı numarası uygun yapılandırılmış.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::YahooAuthProvider::kProviderId);
    
  2. İsteğe bağlı: OAuth isteği ile göndermek istediğiniz ek özel OAuth parametrelerini belirtin.

    // Prompt user to re-authenticate to Yahoo.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Localize to French.
    provider_data.custom_parameters["language"] = "fr";
    

    Parametreler Yahoo desteklerin için bkz Yahoo OAuth belgelerine . Birlikte Firebase-gerekli parametreleri geçemediği Not custom_parameters() . Bu parametreler client_id, redirect_uri, response_type, kapsam ve devlet vardır.

  3. İsteğe bağlı: Ek OAuth ötesinde 2.0 kapsamlarını belirtme profile ve email kimlik doğrulama sağlayıcısından talep istediğimi. Başvurunuz Yahoo API'larından özel kullanıcı verilerine erişim gerektiriyorsa, Yahoo geliştirici konsolunda API izinleriVarsayılanı Yahoo API'leri isteği izinleri gerekir. İstenen OAuth kapsamları, uygulamanın API izinlerinde önceden yapılandırılmış olanlarla tam olarak eşleşmelidir. Okuma, Örneğin / yazma erişimi Kullanıcı kişilerin istenir ve uygulamanın API izinleri önceden sdct-w yerine salt okunur OAuth kapsamı içinde geçirilmiş değil sdct-r . Aksi takdirde akış başarısız olur ve son kullanıcıya bir hata gösterilir.

    // Request access to Yahoo Mail API.
    provider_data.scopes.push_back("mail-r");
    // This must be preconfigured in the app's API permissions.
    provider_data.scopes.push_back("sdct-w");
    

    Daha fazla bilgi için bakınız Yahoo'nun kapsamları belgelerinde .

  4. Sağlayıcı verileriniz yapılandırıldıktan sonra, bunu bir FederatedOAuthProvider oluşturmak için kullanın.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Yetkilendirme sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulaması yapın. Diğer FirebaseAuth işlemlerinden farklı olarak, bunun, kullanıcının kimlik bilgilerini girebileceği bir web görünümü açarak kullanıcı arayüzünüzün kontrolünü ele alacağını unutmayın.

    Akışındaki işaretini başlatmak için çağrı signInWithProvider :

    firebase::Future<firebase::auth::SignInResult> result =
      auth->SignInWithProvider(provider_data);
    

    Başvuruların bekleyin ya edebilir Geleceği Üzerine Bir geri arama kayıt .

  6. Yukarıdaki örnekler odaklanırken oturum açma akışları, ayrıca kullanarak mevcut kullanıcıya bir Yahoo sağlayıcı bağlama yetkisi vardır LinkWithProvider . Örneğin, birden çok sağlayıcıyı aynı kullanıcıya bağlayarak, ikisinden biriyle oturum açmalarına izin verebilirsiniz.

    firebase::Future<firebase::auth::SignInResult> result = user->LinkWithProvider(provider_data);
    
  7. Aynı desen ile kullanılabilir ReauthenticateWithProvider son girişi gerektiren hassas operasyonlar için taze kimlik bilgilerini almak için kullanılabilir.

    firebase::Future<firebase::auth::SignInResult> result =
      user->ReauthenticateWithProvider(provider_data);
    

    Başvuruların bekleyin ya edebilir Geleceği Üzerine Bir geri arama kayıt .

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açtığı kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcısı bilgileri gibi kimlik bilgilerine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

  • Senin uygulamalarda, gelen kullanıcının temel profil bilgileri alabilirsiniz firebase::auth::User nesnesi:

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • Senin Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama yılında Güvenlik Kuralları , alabilirsiniz, kullanıcının benzersiz bir kullanıcı kimliği imzalı auth değişkeni ve hangi verilerin kullanıcı teneke erişimi kontrol etmek için kullanabilirsiniz.

Kullanıcıların birden çok kimlik doğrulama sağlayıcıları kullanarak uygulamada oturum izin verebilir mevcut bir kullanıcı hesabına auth sağlayıcı kimlik bilgilerini birbirine bağlayan.

Bir kullanıcı Oturumu kapatmak için çağrı SignOut() :

auth->SignOut();