Sie können Firebase Authentication in ein benutzerdefiniertes Authentifizierungssystem einbinden, indem Sie Ihren Authentifizierungsserver so ändern, dass benutzerdefinierte signierte Tokens erstellt werden, wenn sich ein Nutzer erfolgreich anmeldet. Ihre App empfängt dieses Token und verwendet es zur Authentifizierung bei Firebase.
Hinweis
-
Bevor Sie Firebase Authentication verwenden können, müssen Sie Folgendes tun:
- Registrieren Sie Ihr Unity-Projekt in Ihrem Firebase-Projekt.
- Fügen Sie Ihrem Unity-Projekt das Firebase Unity SDK (insbesondere
FirebaseAuth.unitypackage) hinzu.
Eine detaillierte Anleitung für diese ersten Einrichtungsschritte finden Sie unter Firebase zu einem Unity-Projekt hinzufügen.
- Rufen Sie die Serverschlüssel Ihres Projekts ab:
-
Rufen Sie in der Firebase-Konsole die Seite
Einstellungen > Tab Dienstkonten auf. - Klicken Sie unten im Abschnitt Firebase Admin SDK auf Neuen privaten Schlüssel generieren.
- Das öffentliche/private Schlüsselpaar des neuen Dienstkontos wird automatisch auf Ihrem Computer gespeichert. Kopieren Sie diese Datei auf Ihren Authentifizierungsserver.
-
Rufen Sie in der Firebase-Konsole die Seite
Mit Firebase authentifizieren
Die KlasseFirebaseAuth ist das Gateway für alle API-Aufrufe.
Der Zugriff erfolgt über FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Rufen Sie Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync mit dem Token von Ihrem Authentifizierungsserver auf.
- Wenn sich Nutzer in Ihrer App anmelden, senden Sie ihre Anmeldedaten (z. B. Nutzername und Passwort) an Ihren Authentifizierungsserver. Ihr Server prüft die Anmeldedaten und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
- Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync, um den Nutzer anzumelden:auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCustomTokenAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCustomTokenAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Nächste Schritte
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, mit denen sich der Nutzer angemeldet hat, d. h. mit dem Nutzernamen und dem Passwort, der Telefonnummer oder den Informationen des Authentifizierungsanbieters. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Nutzer anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers aus dem Objekt
Firebase.Auth.FirebaseUserabrufen: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 den Sicherheitsregeln für Firebase Realtime Database und Cloud Storage können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen
authabrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Sie können Nutzern erlauben, sich mit mehreren Authentifizierungsanbietern in Ihrer App anzumelden, indem Sie Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen.
Wenn Sie einen Nutzer abmelden möchten, rufen Sie SignOut() auf:
auth.SignOut();