Authentifizieren mit Yahoo und Unity

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

Bevor Sie können Firebase - Authentifizierung , müssen Sie:

  • Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.

    • Wenn Ihr Unity-Projekt bereits Firebase verwendet, ist es bereits für Firebase registriert und konfiguriert.

    • Wenn Sie nicht über ein Unity - Projekt haben, können Sie eine Download - Beispielanwendung .

  • Fügen Sie die Firebase Unity SDK (genauer gesagt, FirebaseAuth.unitypackage ) , um Ihre Unity - Projekt.

Beachten Sie, dass das Hinzufügen Firebase zu Ihrer Unity Projektaufgabe beinhaltet sowohl in der Firebase - Konsole und in Ihrem geöffneten Projekt Unity (zum Beispiel downloaden Sie Config - Dateien Firebase aus der Konsole, dann in der Unity - Projekt bewegen).

Besuchen Sie die Firebase.Auth.FirebaseAuth Klasse

Die FirebaseAuth Klasse ist das Gateway für alle API - Aufrufe. Es ist zugänglich durch FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Verwalten Sie den Anmeldevorgang mit dem Firebase SDK

Gehen Sie wie folgt vor, um den Anmeldevorgang mit dem Firebase SDK durchzuführen:

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

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
    
  2. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth Parameter , die Sie mit dem OAuth Anfrage senden möchten.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Yahoo.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Localize to French.
    providerData.CustomParameters.Add("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.

    providerData.Scopes = new List<string>();
    
    // Request access to Yahoo Mail API.
    providerData.Scopes.Add("mail-r");
    // This must be preconfigured in the app's API permissions.
    providerData.Scopes.Add("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 =
        new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  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 SignInWithProviderAsync :

<<../_includes/_sign_in_with_provider_unity.md>>>

  1. 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 LinkWithProviderAsync . Sie können beispielsweise mehrere Anbieter mit demselben Benutzer verknüpfen, sodass sie sich bei beiden anmelden können.

    user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("LinkWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("LinkWithProviderAsync encountered an error: "
              + task.Exception);
            return;
        }
    
        Firebase.Auth.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  2. Das gleiche Muster kann mit verwendet wird ReauthenticateWithProviderAsync die verwendet werden können frische Anmeldeinformationen für sensible Vorgänge abzurufen , die letzte Anmeldung erforderlich.

    user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("ReauthenticateWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError(
            "ReauthenticateWithProviderAsync encountered an error: " +
                task.Exception);
            return;
        }
    
        Firebase.Auth.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

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 bekommen Firebase.Auth.FirebaseUser Objekt:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • 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();