Authentifizieren mit Yahoo und C++

Sie können Ihren Benutzern die Authentifizierung bei Firebase über OAuth-Anbieter wie Yahoo ermöglichen, indem Sie webbasiertes generisches OAuth-Login mit dem Firebase SDK in Ihre App integrieren, um den End-to-End-Anmeldevorgang durchzuführen. Da dieser Ablauf die Verwendung der telefonbasierten Firebase SDKs erfordert, wird er nur auf Android- und Apple-Plattformen unterstützt.

Bevor Sie beginnen

  1. In Firebase zu Ihrem C ++ Projekt .
  2. In der Firebase Konsole , öffnen Sie den Abschnitt Auth.
  3. Auf dem Anmelden Methode Registerkarte, aktivieren Sie den Yahoo - Anbieter.
  4. Fügen Sie die Client - ID und Client - Geheimnis von dem betreffenden Anbieter Entwickler - Konsole an den Provider - Konfiguration:
    1. Um ein Yahoo OAuth - Client zu registrieren, folgen Sie der Yahoo Entwickler - Dokumentation über eine Web - Anwendung mit Yahoo Registrierung .

      Achten Sie darauf , die beiden OpenID Connect API - Berechtigungen wählen: profile und email - email .

    2. Bei Anwendungen mit diesen Anbietern registrieren, müssen Sie die Registrierung *.firebaseapp.com Domain für Ihr Projekt als Redirect - Domain für Ihre App.
  5. Klicken Sie auf Speichern.

Besuchen Sie das firebase::auth::Auth Klasse

Die Auth - Klasse ist das Gateway für alle API - Aufrufe.
  1. Fügen Sie die Auth und App - Header - Dateien:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. In Ihrem Initialisierungscode, erstellen Sie 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__)
    
  3. Erwerben Sie die firebase::auth::Auth - Klasse für Ihre firebase::App . Es gibt eine Eins-zu-Eins - Abbildung zwischen App und Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Verwalten Sie den Anmeldevorgang mit dem Firebase SDK

Führen Sie die folgenden Schritte aus, um den Anmeldevorgang mit dem Firebase SDK abzuwickeln:

  1. Konstrukt eine Instanz eines FederatedOAuthProviderData mit der Provider - ID für geeignete Yahoo konfiguriert.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::YahooAuthProvider::kProviderId);
    
  2. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth Parameter , die Sie mit dem OAuth Anfrage senden möchten.

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

    Für die Parameter Yahoo unterstützt, finden Sie in der Yahoo OAuth Dokumentation . Beachten Sie, dass Sie nicht Firebase-erforderliche Parameter mit übergeben können custom_parameters() . Diese Parameter sind client_id, redirect_uri, response_type, Umfang und Zustand.

  3. Optional: Geben Sie zusätzliche OAuth 2.0 Bereiche jenseits profile und email - email , dass Sie auf Anfrage vom Authentifizierungs - Provider wollen. Wenn Ihre Anwendung Zugriff auf private Benutzerdaten von Yahoo APIs erfordert, müssen Sie Anfrage Berechtigungen für Yahoo APIs unter API - Berechtigungen in der Yahoo - Entwickler - Konsole. Angeforderte OAuth-Bereiche müssen genau mit den vorkonfigurierten in den API-Berechtigungen der App übereinstimmen. Zum Beispiel , wenn die Lese- / Schreibzugriff auf Benutzerkontakte angefordert und in der App-API - Berechtigungen vorkonfiguriert, sdct-w anstelle des Nur - Lese - OAuth Umfang bestanden werden sdct-r . Andernfalls schlägt der Flow fehl und dem Endbenutzer wird ein Fehler 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");
    

    Um mehr zu erfahren, finden Sie in der Yahoo Bereiche Dokumentation .

  4. Nachdem Ihre Anbieterdaten konfiguriert wurden, verwenden Sie sie, um einen FederatedOAuthProvider zu erstellen.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Authentifizieren Sie sich bei Firebase mithilfe des Auth-Provider-Objekts. Beachten Sie, dass dies im Gegensatz zu anderen FirebaseAuth-Vorgängen die Kontrolle über Ihre Benutzeroberfläche übernimmt, indem eine Webansicht geöffnet wird, in der der Benutzer seine Anmeldeinformationen eingeben kann.

    Um das Vorzeichen in Fluss zu starten, rufen signInWithProvider :

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

    Ihre Anwendung kann dann warten oder einen Rückruf über die Zukunft registrieren .

  6. Während die obigen Beispiele auf Anmelde-Flows konzentrieren, haben Sie auch die Möglichkeit , einen Yahoo - Provider zu einem vorhandenen Benutzer verwenden zu verknüpfen LinkWithProvider . Sie können beispielsweise mehrere Anbieter mit demselben Benutzer verknüpfen, sodass sie sich bei beiden anmelden können.

    firebase::Future<firebase::auth::SignInResult> result = user->LinkWithProvider(provider_data);
    
  7. Das gleiche Muster kann mit verwendet wird ReauthenticateWithProvider die verwendet werden können frische Anmeldeinformationen für sensible Vorgänge abzurufen , die letzte Anmeldung erforderlich.

    firebase::Future<firebase::auth::SignInResult> result =
      user->ReauthenticateWithProvider(provider_data);
    

    Ihre Anwendung kann dann warten oder einen Rückruf über die Zukunft registrieren .

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal anmeldet, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen – d. h. Benutzername und Kennwort, Telefonnummer oder Authentifizierungsanbieterinformationen – verknüpft, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Anwendungen können Sie die Benutzerprofilgrundinformationen aus dem erhaltenen firebase::auth::User

    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();
    }
    
  • In Ihrer Datenbank und Firebase Realtime Cloud Storage Sicherheitsregeln , können Sie die angemeldeten Nutzer die eindeutige Benutzer - ID aus der bekommen auth Variable, und es verwenden , um steuern kann ein Benutzer Zugriff , welche Daten.

Sie können Benutzer erlauben , durch mehrere Authentifizierungsanbieter anmelden, um Ihre App Verknüpfung Auth - Provider - Anmeldeinformationen zu einem vorhandenen Benutzerkonto.

Um einen Benutzer abzumelden, rufen SignOut() :

auth->SignOut();