Sie können Ihren Nutzern die Möglichkeit geben, sich mit ihren Google-Konten bei Firebase zu authentifizieren, indem Sie Google Log-in in Ihre App einbinden.
Hinweis
Unity-Projekt einrichten
Bevor Sie Firebase Authentication verwenden können, müssen Sie Folgendes tun:
Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.
Wenn Ihr Unity-Projekt bereits Firebase verwendet, ist es schon für Firebase registriert und konfiguriert.
Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.
Fügen Sie Ihrem Unity-Projekt das Firebase Unity SDK (insbesondere
FirebaseAuth.unitypackage) hinzu.
Wenn Sie Firebase zu Ihrem Unity-Projekt hinzufügen, müssen Sie sowohl in der Firebase Console als auch in Ihrem offenen Unity-Projekt Aufgaben ausführen. Sie laden beispielsweise Firebase-Konfigurationsdateien aus der Console herunter und verschieben sie dann in Ihr Unity-Projekt.
Firebase-Projekt und Anmeldedaten einrichten
Android: Geben Sie den SHA-1-Fingerabdruck Ihrer App in der Firebase Console an:
- Rufen Sie in der Firebase-Konsole die
Einstellungen > Tab Allgemein auf. Rufen Sie die Karte Meine Apps auf, wählen Sie Ihre Android-App aus und fügen Sie Ihren SHA-1-Fingerabdruck im Feld SHA-Zertifikat-Fingerabdrücke hinzu.
Sie können den SHA-1-Fingerabdruck Ihres Schlüsselspeichers mit
keytoolabrufen:keytool -keystore path-to-keystore.keystore -list -vWeitere Informationen zum Abrufen des SHA-Fingerabdrucks Ihrer App finden Sie unter Client authentifizieren.
- Rufen Sie in der Firebase-Konsole die
Aktivieren Sie „Google Log-in“ und kopieren Sie Ihre Web-Client-ID:
- Rufen Sie in der Firebase-Konsole Sicherheit > Authentifizierung auf.
- Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Google.
- Maximieren Sie den Bereich Web SDK-Konfiguration und kopieren Sie Ihre Webclient-ID (z. B.
123456-abc.apps.googleusercontent.com). Diese stellt die Zielgruppenforderung (aud) Ihrer ID-Tokens dar und ist sowohl für Android als auch für iOS erforderlich. - Klicken Sie auf Speichern.
Firebase-Konfigurationsdateien aktualisieren und umgekehrte iOS-Client-ID kopieren:
- Laden Sie die neuesten Firebase-Konfigurationsdateien aus der Firebase-Konsole herunter (
für Android undgoogle-services.json für iOS) und ersetzen Sie alle älteren Kopien in Ihrem Unity-Projekt. (Siehe Firebase zu einem Unity-Projekt hinzufügen.)GoogleService-Info.plist - iOS: Öffnen Sie die Datei
und kopieren Sie den Wert des SchlüsselsGoogleService-Info.plist REVERSED_CLIENT_ID(z. B.com.googleusercontent.apps.12345-abc). Dieser Wert ist erforderlich, um das iOS-Weiterleitungs-URL-Schema zu konfigurieren.
- Laden Sie die neuesten Firebase-Konfigurationsdateien aus der Firebase-Konsole herunter (
Binden Sie das Google Log-in-Plug-in in Ihr Unity-Projekt ein.
Plug-in importieren:
- Wenn Sie die Integration in ein bestehendes Projekt vornehmen, sichern Sie Ihr Projekt und entfernen Sie alle älteren Google Log-in-Plug-ins, bevor Sie fortfahren.
- Laden Sie
GoogleSignInNative.unitypackagevon GitHub herunter und importieren Sie es in Ihr Unity-Projekt (Assets > Import Package > Custom Package). Achten Sie darauf, dass alle Dateien ausgewählt sind, und klicken Sie auf Importieren.
Plug-in-Einstellungen konfigurieren:
- Gehen Sie im Unity-Editor zu Window > Google Log-in Native > Settings.
- Fügen Sie Ihre Webclient-ID in das erste Feld ein.
- Fügen Sie die umgekehrte iOS-Client-ID in das zweite Feld ein.
- Klicken Sie auf Save Settings (Einstellungen speichern).
Native Abhängigkeiten auflösen:
- Gehen Sie zu Assets > External Dependency Manager > Android Resolver > Force Resolve.
- Warten Sie auf die Bestätigungsmeldung. Dadurch werden die nativen Credential Manager-Bibliotheken
googleidundandroidxheruntergeladen.
Auf die Klasse Firebase.Auth.FirebaseAuth zugreifen
Die Klasse FirebaseAuth ist das Gateway für alle API-Aufrufe.
Der Zugriff erfolgt über FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Mit Firebase authentifizieren
GoogleSignInManagerin deiner Szene einrichten:- Erstellen Sie in Ihrer ersten Szene ein leeres
GameObjectmit dem NamenGoogleSignInManager. - Hängen Sie das Skript
GoogleSignInManager.csan. - Ziehen Sie das Asset
GoogleSignInNativeSettings(inAssets/GoogleSignInNative/Resources) in den Slot Sign In Settings des Skripts.
- Erstellen Sie in Ihrer ersten Szene ein leeres
Google Log-in auslösen und das ID-Token gegen Firebase-Anmeldedaten eintauschen:
Erstellen Sie ein Controller-Script, das
GoogleSignInManager.OnSignInCompletedundGoogleSignInManager.OnSignInFailedabonniert, die Anmeldung mitGoogleSignInManager.Instance.StartSignIn()auslöst und das resultierende Google-ID-Token mithilfe vonGoogleAuthProvider.GetCredentialgegen Firebase-Anmeldedaten austauscht:using Firebase.Auth; using Firebase.Extensions; using UnityEngine; public class MyAuthController : MonoBehaviour { private FirebaseAuth auth; private void Awake() { auth = FirebaseAuth.DefaultInstance; } private void OnEnable() { GoogleSignInManager.OnSignInCompleted += HandleSignInSuccess; GoogleSignInManager.OnSignInFailed += HandleSignInFailure; } private void OnDisable() { GoogleSignInManager.OnSignInCompleted -= HandleSignInSuccess; GoogleSignInManager.OnSignInFailed -= HandleSignInFailure; } public void OnSignInButtonClick() { GoogleSignInManager.Instance.StartSignIn(); } private void HandleSignInSuccess(string idToken) { Debug.Log("[Auth] Google Sign-In succeeded. Authenticating with Firebase..."); Credential credential = GoogleAuthProvider.GetCredential(idToken, null); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWithOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); }); } private void HandleSignInFailure(string error) { Debug.LogError($"[Auth] Google Sign-In failed: {error}"); } }
App erstellen
Android
- Achten Sie darauf, dass der Paketname in den Playereinstellungen genau mit Ihren Firebase- und Google Cloud-OAuth-Anmeldedaten übereinstimmt.
- Achten Sie darauf, dass das Mindest-API-Level auf 34 oder höher festgelegt ist.
- Klicken Sie auf Build and Run (Erstellen und ausführen).
iOS
- Erstellen Sie Ihr Projekt in Unity, um ein Xcode-Projekt zu generieren, und öffnen Sie dann die generierte
.xcworkspace-Datei. - Gehen Sie in Xcode zum Tab Signing & Capabilities und wählen Sie Ihr Development Team aus.
- Das Plug-in fügt Ihrem Xcode-Projekt automatisch das benutzerdefinierte URL-Schema (
REVERSED_CLIENT_ID) hinzu. Erstellen Sie die App und führen Sie sie auf einem physischen Gerät aus.
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, also 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 über das 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 Ihren 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();