Mit Microsoft und Unity 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

Vor der Verwendung Firebase Authentication, sind folgende Schritte erforderlich:

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

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

    • Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.

  • Fügen Sie das Firebase Unity SDK (insbesondere FirebaseAuth.unitypackage) hinzu: Ihr Unity-Projekt.

Beachten Sie, dass das Hinzufügen von Firebase zu Ihrem Unity-Projekt sowohl Aufgaben im Firebase-Konsole und im geöffneten Unity-Projekt (Beispiel: Sie laden Firebase-Konfigurationsdateien aus der Console herunter und in Ihr Unity-Projekt importieren.

Auf die Klasse Firebase.Auth.FirebaseAuth zugreifen

Die Klasse FirebaseAuth ist das Gateway für alle API-Aufrufe. Sie kann über FirebaseAuth.DefaultInstance aufgerufen werden.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Anmeldevorgang mit dem Firebase SDK durchführen

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 providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.MicrosoftAuthProvider.ProviderId;
    
  2. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an, die Sie mit der OAuth-Anfrage senden.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Microsoft.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Target specific email with login hint.
    providerData.CustomParameters.Add("login_hint",
        "user@firstadd.onmicrosoft.com");
    

    Eine Liste der von Microsoft unterstützten Parameter 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. Geben Sie dazu das Feld „tenant“ im Objekt „custom_parameters“ an.

    // 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".
    providerData.CustomParameters.Add("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.

    providerData.Scopes = new List<string>();
    providerData.Scopes.Add("mail.read");
    providerData.Scopes.Add("calendars.read");
    

    Weitere Informationen finden Sie im Microsoft-Dokumentation zu Berechtigungen und Einwilligungen

  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 = new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. Authentifizieren Sie sich bei Firebase mithilfe des Auth-Anbieterobjekts. 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.

    Rufen Sie SignInAndRetrieveDataWithCredentialAsync auf, um den Anmeldevorgang zu starten:

    auth.SignInWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("SignInWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("SignInWithProviderAsync encountered an error: " +
              task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

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

    Im Gegensatz zu anderen Anbietern, die von Firebase Auth unterstützt werden, eine Foto-URL angeben. Stattdessen müssen die Binärdaten für ein Profilfoto angefordert über Microsoft Graph API

  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 LinkWithProviderAsync. Sie können beispielsweise mehrere mit demselben Nutzer verknüpft, damit sie sich 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.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  7. Dasselbe Muster kann mit ReauthenticateWithProviderAsync verwendet werden, können zum Abrufen neuer Anmeldedaten für vertrauliche Vorgänge verwendet werden, erfordert eine kürzliche Anmeldung.

    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.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

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.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 Ihren Firebase Realtime Database- und Cloud Storage-Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen und damit 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();