Sie können Ihren Nutzern die Authentifizierung bei Firebase mithilfe von OAuth-Anbietern wie Yahoo durch Integration eines webbasierten generischen OAuth-Logins in Ihre Anwendung mithilfe der Firebase SDK für die vollständige Anmeldung Da für diesen Ablauf die Verwendung der smartphonebasierten Firebase SDKs erforderlich ist, wird er nur auf Android- und Apple-Plattformen unterstützt.
Hinweis
- Fügen Sie Firebase zu Ihrem C++-Projekt hinzu.
- Öffnen Sie in der Firebase Console den Bereich Auth.
- Aktivieren Sie auf dem Tab Anmeldemethode den Anbieter Yahoo.
- Fügen Sie die Client-ID und den Clientschlüssel aus der Entwicklerkonsole dieses Anbieters hinzu.
Anbieterkonfiguration:
-
Um einen Yahoo-OAuth-Client zu registrieren, folgen Sie dem Yahoo-Entwickler Dokumentation zu Registrierung einer Webanwendung bei Yahoo.
Wählen Sie die beiden OpenID Connect API-Berechtigungen
profile
undemail
aus. - Wenn Sie Apps bei diesen Anbietern registrieren, müssen Sie die
*.firebaseapp.com
-Domain für Ihr Projekt als Weiterleitungsdomain für Ihre App registrieren.
-
- Klicken Sie auf Speichern.
Auf die Klasse firebase::auth::Auth
zugreifen
Die Klasse Auth
ist das Gateway für alle API-Aufrufe.
- Fügen Sie die Auth- und App-Headerdateien hinzu:
#include "firebase/app.h" #include "firebase/auth.h"
- Erstellen Sie in Ihrem Initialisierungscode eine
firebase::App
-Klasse.#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__)
- Rufen Sie die
firebase::auth::Auth
-Klasse für Ihrefirebase::App
ab. Es gibt eine Eins-zu-Eins-Zuordnung zwischenApp
undAuth
.firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
Anmeldevorgang mit dem Firebase SDK durchführen
So führen Sie den Anmeldevorgang mit dem Firebase SDK aus:
Instanz einer
FederatedOAuthProviderData
erstellen, die konfiguriert wurde mit die für Yahoo.firebase::auth::FederatedOAuthProviderData provider_data(firebase::auth::YahooAuthProvider::kProviderId);
Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an, die mit der OAuth-Anfrage gesendet werden sollen.
// Prompt user to re-authenticate to Yahoo. provider_data.custom_parameters["prompt"] = "login"; // Localize to French. provider_data.custom_parameters["language"] = "fr";
Informationen zu den von Yahoo unterstützten Parametern finden Sie in der Yahoo OAuth-Dokumentation. Beachten Sie, dass Sie keine für Firebase erforderlichen Parameter mit
custom_parameters()
Diese Parameter sind client_id, redirect_uri, response_type, scope und state.Optional: Geben Sie neben
profile
und weiteren OAuth 2.0-Bereichen weitere OAuth 2.0-Bereiche an.email
, die Sie vom Authentifizierungsanbieter anfordern möchten. Wenn Ihr Anwendung Zugriff auf private Nutzerdaten von Yahoo-APIs benötigt, können Sie müssen Sie Berechtigungen für Yahoo! APIs unter API Permissions (API-Berechtigungen) im Yahoo!-Entwicklerkonsole Die angeforderten OAuth-Bereiche müssen genau mit den in den API-Berechtigungen der App vorkonfigurierten Bereichen übereinstimmen. Wenn beispielsweise Lese-/Schreibzugriff auf die Kontakte des Nutzers angefordert und in den API-Berechtigungen der App vorkonfiguriert wird, musssdct-w
anstelle des OAuth-Bereichs „Lesezugriff“sdct-r
übergeben werden. Andernfalls schlägt der Ablauf fehl und dem Endnutzer wird eine Fehlermeldung angezeigt.// 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");
Weitere Informationen finden Sie im Dokumentation zu den Yahoo-Bereichen
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);
Authentifizierung mit Firebase über das Auth-Anbieterobjekt. Im Gegensatz zu anderen FirebaseAuth-Vorgängen hinzugefügt wurde, wird die Benutzeroberfläche gesteuert, Webansicht öffnen, 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 wartet dann möglicherweise oder einen Callback für das Future registrieren
Die obigen Beispiele konzentrieren sich zwar auf Anmeldeabläufe, Sie haben aber auch die Möglichkeit, einen Yahoo-Anbieter mithilfe von
LinkWithProvider
Sie können beispielsweise mehrere Anbieter mit demselben Nutzer verknüpfen, damit er sich mit einem beliebigen davon anmelden kann.firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
Dasselbe Muster kann mit
ReauthenticateWithProvider
verwendet werden, wobei werden zum Abrufen neuer Anmeldedaten für vertrauliche Vorgänge verwendet, die Letzte Anmeldungfirebase::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. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps in Ihrem Projekt zu identifizieren, 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.
Wenn Sie einen Nutzer abmelden möchten, rufen Sie SignOut()
auf:
auth->SignOut();