Microsoft 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: Web tabanlı genel OAuth Girişi entegrasyonuyla Microsoft Azure Active Directory Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanarak uygulamanıza ekleyin. Bu akış, telefon tabanlı Firebase SDK'larının kullanılmasını gerektirdiğinden, ve Apple platformlarında desteklenir.

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 Microsoft 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. Microsoft OAuth istemcisi kaydetmek için şu sayfadaki talimatları uygulayın: Hızlı başlangıç kılavuzu: Azure Active Directory v2.0 uç noktasına bir uygulama kaydedin. Bu uç noktanın Azure'un yanı sıra Microsoft kişisel hesapları da kullanarak oturum açmayı desteklediğini unutmayın Active Directory hesapları. Daha fazla bilgi Azure Active Directory 2.0 sürümü hakkında.
    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: sağlayıcı kimliğini girin.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::MicrosoftAuthProvider::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 Microsoft.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Target specific email with login hint.
    provider_data.custom_parameters["login_hint"] =
        "user@firstadd.onmicrosoft.com";
    

    Microsoft'un desteklediği parametreler için Microsoft OAuth dokümanları. Firebase'in gerekli parametrelerini setCustomParameters() Bu parametreler client_id, response_type, redirect_uri, state, scope ve response_mode parametresini kullanabilirsiniz.

    Yalnızca belirli bir Azure AD kiracısındaki kullanıcıların oturum açmasına izin vermek için Azure AD kiracısının kolay alan adını girerek ya da kiracının GUID tanımlayıcısı kullanılabilir. Bu işlem, "kiracı" alanına girmelisiniz.

    // Optional "tenant" parameter in case you are using an Azure AD tenant.
    // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
    // or "common" for tenant-independent tokens.
    // The default value is "common".
    provider_data.custom_parameters["tenant"] ="TENANT_ID";
    
  3. İsteğe bağlı: Temel profilin ötesinde, ek OAuth 2.0 kapsamlarını belirtin. kimlik doğrulama sağlayıcısından istekte bulunabilirsiniz.

    provider_data.scopes.push_back("mail.read");
    provider_data.scopes.push_back("calendars.read");
    

    Daha fazla bilgi edinmek için Microsoft izinleri ve izin 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.

    OAuth erişim jetonunu kullanarak Microsoft Graph API.

    Firebase Auth tarafından desteklenen diğer sağlayıcılardan farklı olarak, Microsoft fotoğraf URL'si sağlar ve bunun yerine, profil fotoğrafı için ikili verilerde talep edilen e-posta adresi Microsoft Graph API.

  6. Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da Microsoft Azure Active Directory sağlayıcısını mevcut bir kuruluşa bağlama kullanıcısı LinkWithProvider kullanıyor. Örneğin, birden çok sağlayıcıyı aynı kullanıcıya göstererek bu iki sağlayıcıdan ikisiyle de oturum açabilmesini 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();