Yahoo ve C++ Kullanarak Kimlik Doğrula

Kullanıcılarınızın aşağıdaki gibi OAuth sağlayıcıları kullanarak Firebase ile kimlik doğrulaması yapmasına izin verebilirsiniz: Yahoo Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'sı. Bu akış yalnızca telefon tabanlı Firebase SDK'larının kullanımı. Bu, yalnızca Android ve Apple platformları.

Başlamadan önce

  1. Firebase'i C++ projenize ekleyin.
  2. Firebase konsolunda Auth bölümünü açın.
  3. Oturum açma yöntemi sekmesinde Yahoo sağlayıcısını etkinleştirin.
  4. Söz konusu sağlayıcının geliştirici konsolundan İstemci Kimliği ve İstemci Gizli Anahtarı'nı sağlayıcı yapılandırması:
    1. Yahoo OAuth istemcisi kaydetmek için: Yahoo OAuth geliştiricisindeki ile ilgili dokümanlar Yahoo'ya bir web uygulaması kaydetme.

      İki COPPA Connect API iznini seçtiğinizden emin olun: profile ve email.

    2. Bu sağlayıcılara uygulama kaydederken şunu kaydettiğinizden emin olun: Projenizin *.firebaseapp.com alan adını uygulamasını indirin.
  5. Kaydet'i tıklayın.

firebase::auth::Auth sınıfına erişme

Auth sınıfı, tüm API çağrılarına yönelik ağ geçididir.
  1. Auth ve Uygulama başlığı dosyalarını ekleyin:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
    .
  2. Başlatma kodunuzda bir 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. firebase::App için firebase::auth::Auth sınıfını edinin. App ile Auth arasında bire bir eşleme var.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Oturum açma akışını Firebase SDK'sı ile yönetme

Oturum açma akışını Firebase SDK'sı ile yönetmek için aşağıdaki adımları uygulayın:

  1. Şununla yapılandırılmış bir FederatedOAuthProviderData örneği oluşturun: Yahoo'ya uygun sağlayıcı kimliği.

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

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

    Yahoo'nun desteklediği parametreler için Yahoo OAuth dokümanları. Firebase'in gerekli parametrelerini custom_parameters() Bu parametreler client_id, redirect_uri, response_type, scope ve state öğesini seçebilirsiniz.

  3. İsteğe bağlı: profile dışında ek OAuth 2.0 kapsamları belirtin ve Kimlik doğrulama sağlayıcıdan istekte bulunmak istediğiniz email. Eğer uygulamasının Yahoo API'lerinden gizli kullanıcı verilerine erişmesi gerektiğinde, API İzinleri altında Yahoo API'lerine Yahoo geliştirici konsolu. İstenen OAuth kapsamları uygulamanın API izinlerinde önceden yapılandırılmış olanları içerir. Örneğin, okuma/yazma kullanıcının kişilerine erişim istendi ve uygulamanın API'sinde önceden yapılandırıldı izinleri için salt okunur OAuth kapsamı yerine sdct-w iletilmelidir sdct-r. Aksi takdirde,akış başarısız olur ve yardımcı olur.

    // 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 edinmek için Yahoo kapsamları dokümanları.

  4. Sağlayıcı verileriniz yapılandırıldıktan sonra, verilerinizi kullanarak FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Auth sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Unutmayın, diğer FirebaseAuth işlemleri için, bu işlem, Kullanıcının kimlik bilgilerini girebileceği bir web görünümü sunar.

    Oturum açma akışını başlatmak için SignInWithProvider numaralı telefonu arayın:

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

    Uygulamanız bu işlemin ardından bekleyebilir veya Gelecekte bir geri çağırma kaydetmemiz gerekir.

  6. Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da kullanarak bir Yahoo sağlayıcısını mevcut bir kullanıcıya bağlama LinkWithProvider Örneğin, birden çok sağlayıcıyı aynı kullanıcıya vererek ikisinden biriyle oturum açmalarını sağlar.

    firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
    
  7. Aynı desen ReauthenticateWithProvider ile de kullanılabilir. gereken hassas işlemler için yeni kimlik bilgileri almak üzere kullanılır. son giriş.

    firebase::Future<firebase::auth::AuthResult> result =
      user.ReauthenticateWithProvider(provider_data);
    

    Uygulamanız bu işlemin ardından bir geri arama bekleyebilir veya hakkında daha fazla bilgi edinin.

Sonraki adımlar

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.

  • Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz: firebase::auth::User nesne:

    firebase::auth::User user = auth->current_user();
    if (user.is_valid()) {
      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();
    }
    
  • Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz: auth değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.

Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.

Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın SignOut():

auth->SignOut();