Mit Microsoft und C++ authentifizieren

Sie können Ihren Nutzern die Authentifizierung bei Firebase mithilfe von OAuth-Anbietern wie Microsoft Azure Active Directory durch Integration webbasierter generischer OAuth-Anmeldungen mit dem Firebase SDK in Ihre App einbinden, um den Anmeldevorgang von Anfang bis Ende durchzuführen. Da für diesen Ablauf die telefonbasierten Firebase SDKs verwendet werden müssen, die auf Android- und Apple-Plattformen unterstützt werden.

Hinweis

  1. Fügen Sie Ihrem C++-Projekt Firebase hinzu.
  2. Öffnen Sie in der Firebase Console den Bereich Auth.
  3. Aktivieren Sie auf dem Tab Anmeldemethode den Anbieter Microsoft.
  4. Fügen Sie die Client-ID und den Clientschlüssel aus der Entwicklerkonsole dieses Anbieters hinzu. Anbieterkonfiguration:
    1. Um einen Microsoft OAuth-Client zu registrieren, folgen Sie der Anleitung unter Kurzanleitung: Anwendung mit dem Azure Active Directory v2.0-Endpunkt registrieren Beachten Sie, dass dieser Endpunkt die Anmeldung über private Microsoft-Konten und Azure unterstützt Active Directory-Konten. Weitere Informationen zu Azure Active Directory v2.0.
    2. Achten Sie bei der Registrierung von Apps bei diesen Anbietern darauf, die *.firebaseapp.com-Domain für Ihr Projekt als Weiterleitungsdomain für Ihr
  5. Klicken Sie auf Speichern.

Auf die Klasse firebase::auth::Auth zugreifen

Die Klasse Auth ist das Gateway für alle API-Aufrufe.
  1. Fügen Sie die Auth- und App-Headerdateien hinzu:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Erstellen Sie in Ihrem Initialisierungscode einen Klasse firebase::App.
    #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. Rufen Sie die firebase::auth::Auth-Klasse für Ihre firebase::App ab. Es gibt eine 1:1-Zuordnung zwischen App und Auth.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Anmeldevorgang mit dem Firebase SDK abwickeln

So führen Sie den Anmeldevorgang mit dem Firebase SDK aus:

  1. Instanz einer FederatedOAuthProviderData erstellen, die konfiguriert wurde mit die für Microsoft entsprechende Anbieter-ID.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);
    
  2. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an, die mit der OAuth-Anfrage gesendet werden sollen.

    // 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";
    

    Informationen zu den von Microsoft unterstützten Parametern finden Sie in der Microsoft OAuth-Dokumentation Beachten Sie, dass Sie keine für Firebase erforderlichen Parameter mit setCustomParameters() Diese Parameter sind client_id, response_type, redirect_uri, state, scope und response_mode.

    So erlauben Sie nur Nutzern aus einem bestimmten Azure AD-Mandanten, sich anzumelden in die Anwendung einbinden, entweder den Anzeigenamen des Azure AD-Mandanten oder die GUID-Kennung des Mandanten verwendet werden. Dies kann durch Angabe von der „Mandant“ im Objekt mit benutzerdefinierten Parametern.

    // 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. Optional: Geben Sie über das Basisprofil hinaus zusätzliche OAuth 2.0-Bereiche an, den Sie beim Authentifizierungsanbieter anfordern möchten.

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

    Weitere Informationen finden Sie in der Dokumentation zu Berechtigungen und Einwilligungen von Microsoft.

  4. Nachdem Sie Ihre Anbieterdaten konfiguriert haben, können Sie damit eine FederatedOAuthProvider

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Authentifizieren Sie sich bei Firebase mithilfe des Auth-Anbieterobjekts. Im Gegensatz zu anderen FirebaseAuth-Vorgängen wird hier die Kontrolle über die Benutzeroberfläche übernommen, indem eine Webansicht eingeblendet wird, in der der Nutzer seine Anmeldedaten eingeben kann.

    Rufe SignInWithProvider auf, um den Anmeldevorgang zu starten:

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

    Ihre Anwendung kann dann warten oder einen Rückruf für die Future-Funktion registrieren.

    Mit dem OAuth-Zugriffstoken können Sie die Methode Microsoft Graph API

    Anders als andere von Firebase Auth unterstützte Anbieter stellt Microsoft keine Foto-URL bereit. Stattdessen müssen die Binärdaten für ein Profilbild über die Microsoft Graph API angefordert werden.

  6. Die obigen Beispiele konzentrieren sich zwar auf Anmeldeabläufe, Sie haben aber auch die Möglichkeit, Möglichkeit zum Verknüpfen eines Microsoft Azure Active Directory-Anbieters mit einem vorhandenen Nutzer mit LinkWithProvider. Sie können beispielsweise mehrere mit demselben Nutzer verknüpft, damit sie sich anmelden können.

    firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
    
  7. Dasselbe Muster kann mit ReauthenticateWithProvider verwendet werden, wobei werden zum Abrufen neuer Anmeldedaten für vertrauliche Vorgänge verwendet, die Letzte Anmeldung

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

    Ihre Anwendung wartet dann entweder oder registriert einen Rückruf auf in die Zukunft.

Nächste Schritte

Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und die mit den Anmeldedaten verknüpft sind, d. h. Nutzername und Passwort, oder Authentifizierungsanbieter-Informationen – also für den Nutzer, mit dem sich der Nutzer angemeldet hat. Diese neue -Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um in jeder App in Ihrem Projekt einen Nutzer erreichen, unabhängig davon, wie er sich anmeldet.

  • Die grundlegenden Profilinformationen der Nutzer finden Sie in Ihren Apps über die firebase::auth::User-Objekt:

    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();
    }
    
  • In Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen, und steuern, auf welche Daten ein Nutzer zugreifen kann.

Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.

Rufen Sie auf, um einen Nutzer abzumelden. SignOut():

auth->SignOut();