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

Microsoft 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 Microsoft Azure Active Directory 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 Microsoft 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 Microsoft OAuth istemcisi kayıt olmak için yönergeleri izleyin Quickstart: Kayıt Azure Active Directory v2.0 son nokta ile bir uygulama . Bu uç noktanın, Microsoft kişisel hesaplarının yanı sıra Azure Active Directory hesaplarını kullanarak oturum açmayı desteklediğini unutmayın. Daha fazla bilgi Azure Active Directory v2.0 hakkında.
    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 Microsoft için sağlayıcı kimliği uygun yapılandırılmış.

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

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

    Yalnızca belirli bir Azure AD kiracısındaki kullanıcıların uygulamada oturum açmasına izin vermek için Azure AD kiracısının kolay etki alanı adı veya kiracının GUID tanımlayıcısı kullanılabilir. Bu, özel parametreler nesnesindeki "kiracı" alanı belirtilerek yapılabilir.

    // 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ı: doğrulama sağlayıcısından talep istediğiniz ek OAuth temel profil ötesinde 2.0 kapsamlarını belirtme.

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

    Daha fazla bilgi için bakınız , Microsoft izinler ve rıza belgeleri .

  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 .

    OAuth erişim jetonu kullanarak, arayabilecek Microsoft Graph API .

    Firebase Auth tarafından desteklenen diğer sağlayıcıların aksine, Microsoft fotoğraf URL'sini sağlamaz ve bunun yerine, profil fotoğrafı için ikili veri yoluyla talep edilmesi gerekmektedir Microsoft Graph API .

  6. Yukarıdaki örnekler odaklanırken oturum açma akışları, ayrıca kullanarak mevcut kullanıcıya bir Microsoft Azure Active Directory 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();