Mit den Google Play-Spieldiensten können Sie Spieler in einem Android-Spiel anmelden, das auf Firebase und Unity basiert. Wenn Sie die Google Play-Spieldienste-Anmeldung mit Firebase verwenden möchten, melden Sie den Spieler zuerst mit Google Play Games an und fordern Sie dabei einen OAuth 2.0-Autorisierungscode an. Übergeben Sie den Autorisierungscode dann an PlayGamesAuthProvider, um ein Firebase-Anmeldedaten zu generieren, mit dem Sie sich bei Firebase authentifizieren können.
Hinweis
Unity-Projekt einrichten
Fügen Sie Ihrem Unity-Projekt die Firebase-Konfigurationsdatei und das Firebase Unity SDK hinzu, wie unter Firebase zu einem Unity-Projekt hinzufügen beschrieben. Folgen Sie der Anleitung für Android.
Achten Sie darauf,
FirebaseAuth.unitypackagezu importieren.Legen Sie im Unity-Editor unter Build Settings > Player Settings > Other Settings (Build-Einstellungen > Player-Einstellungen > Weitere Einstellungen) den Android-Paketnamen Ihres Spiels fest.
Wählen Sie dann unter Build Settings > Player Settings > Publishing Settings (Build-Einstellungen > Player-Einstellungen > Veröffentlichungseinstellungen) einen Schlüsselspeicher und einen Schlüssel aus oder erstellen Sie einen, der zum Signieren Ihres Android-Pakets verwendet wird. Ihre APK muss signiert sein, damit die Anmeldung bei Play Games funktioniert. Diese Anforderung gilt nicht nur für die Veröffentlichung, sondern auch während der Entwicklung Ihres Spiels.
Das Firebase-Projekt einrichten
Rufen Sie in der Firebase Console das Firebase-Projekt auf, in dem Sie Ihr Unity-Projekt registriert haben.
Geben Sie den SHA-1-Fingerabdruck Ihres Spiels an.
Rufen Sie in der Firebase Console die Seite
Einstellungen > Tab Allgemein auf.Scrollen Sie nach unten zur Karte Meine Apps, wählen Sie Ihre Android-App aus und fügen Sie Ihren SHA-1-Fingerabdruck in das Feld Fingerabdrücke für SHA-Zertifikat ein.
Mit dem Befehl
keytoolkönnen Sie den SHA-1-Fingerabdruck Ihres Schlüssels abrufen:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTOREAlternativ können Sie den SHA-Hash Ihres Signaturzertifikats mit dem Gradle-Befehl
signingReportabrufen:gradlew signingReport
Weitere Informationen zum Abrufen des SHA-Fingerabdrucks Ihrer App finden Sie unter Client authentifizieren.
Ihr APK muss mit diesem Schlüssel signiert werden, auch während der Entwicklung.
Google Play Games als Anmeldeanbieter aktivieren:
Wechseln Sie in der Firebase-Konsole zu Sicherheit > Authentifizierung.
Generieren Sie die Client-ID und den Clientschlüssel des Webservers für Ihr Projekt und rufen Sie sie ab:
Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Google.
Kopieren Sie die Client-ID und den Clientschlüssel des Webservers vom Google-Anmeldeanbieter.
Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Play Games und geben Sie die Webserver-Client-ID und den Clientschlüssel Ihres Projekts an, die Sie im letzten Schritt erhalten haben.
Play Games services mit den Informationen zu Ihrer Firebase-App konfigurieren
Öffnen Sie in der Google Play-Konsole Ihre Google Play-App oder erstellen Sie eine.
Klicken Sie im Bereich Wachstum auf Play Games services > Einrichtung und Verwaltung > Konfiguration.
Klicken Sie auf Ja, in meinem Spiel kommen bereits Google-APIs zum Einsatz, wählen Sie Ihr Firebase-Projekt aus der Liste aus und klicken Sie dann auf Verwenden.
Klicken Sie auf der Konfigurationsseite für Play Games services auf Anmeldedaten hinzufügen.
- Wählen Sie den Typ Game server (Spielserver) aus.
- Wählen Sie im Feld OAuth-Client die Webclient-ID Ihres Projekts aus. Achten Sie darauf, dass es sich um dieselbe Client-ID handelt, die Sie beim Aktivieren der Play Games-Anmeldung angegeben haben.
- Speichern Sie die Änderungen.
Klicken Sie auf der Konfigurationsseite für Play Games services noch einmal auf Anmeldedaten hinzufügen.
- Wählen Sie den Typ Android aus.
- Wählen Sie im Feld OAuth-Client die Android-Client-ID Ihres Projekts aus. Wenn Sie Ihre Android-Client-ID nicht sehen, müssen Sie den SHA-1-Fingerabdruck Ihres Spiels in der Firebase-Konsole festlegen.
- Speichern Sie die Änderungen.
Erstellen Sie auf den Seiten Events, Erfolge und Bestenlisten alle Play-Games-Ressourcen, die Sie für Ihr Spiel verwenden möchten. Wenn Sie keine sofort verwenden möchten, können Sie einen Platzhalter erstellen. Klicken Sie dann auf einer der Seiten Events, Erfolge oder Bestenlisten auf Ressourcen abrufen und kopieren Sie das Android-Ressourcen-Snippet an einen geeigneten Ort. Sie benötigen das Snippet, um das Google Play Games services-Plug-in einzurichten.
Das Ressourcen-Snippet sieht so aus:
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources> <!-- app_id --> <string name="app_id" translatable="false">123456789000</string> <!-- package_name --> <string name="package_name" translatable="false">com.example.game</string> <!-- event Wiped Raid --> <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string> </resources>Fügen Sie auf der Seite Tester die E‑Mail-Adressen aller Nutzer hinzu, die sich in Ihrem Spiel anmelden können müssen, bevor Sie es auf Play Store veröffentlichen.
Play Games-Anmeldung in Ihr Spiel einbinden
Laden Sie die aktuelle Version des Play Games-Plug-ins für Unity herunter und extrahieren Sie sie.
Importieren Sie das Unity-Paket des Plug-ins in Ihr Unity-Projekt. Sie finden das Unity-Paket im Verzeichnis
current-builddes Releasearchivs.Play Games-Plug-in einrichten:
- Klicken Sie auf Fenster > Google Play Games > Einrichtung > Android-Einrichtung, um den Bildschirm Android-Konfiguration zu öffnen.
- Fügen Sie den Android-Ressourcenausschnitt, den Sie aus der Play Console erhalten haben, in das Feld Resources Definition (Ressourcendefinition) ein.
- Fügen Sie die Client-ID Ihres Webservers, die Sie beim Aktivieren der Anmeldung über Play Games in der Firebase-Konsole angegeben haben, in das Feld Client-ID ein.
- Klicken Sie auf Einrichten.
Konfigurieren Sie in Ihrem Spiel einen Play Games-Client mit aktivierter
RequestServerAuthCode-Einstellung:using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; using System.Threading.Tasks; PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .RequestServerAuthCode(false /* Don't force refresh */) .Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate();Wenn sich ein Spieler dann mit Play Spiele anmeldet, rufen Sie
Social.localUser.Authenticate()auf:Social.localUser.Authenticate((bool success) => { // handle success or failure });
Bei Firebase authentifizieren
Nachdem Sie die Anmeldung über Play Games in Ihr Spiel eingebunden haben, können Sie den Autorisierungscode der Play Games-Dienste verwenden, um sich bei Firebase zu authentifizieren.
Nachdem sich der Spieler erfolgreich über Play Games angemeldet hat, rufen Sie im Anmelde-Fortsetzungs-Handler einen Autorisierungscode für das Konto des Spielers ab:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });Tauschen Sie dann den Autorisierungscode der Play-Spieldienste gegen Anmeldedaten für Firebase ein und verwenden Sie die Firebase-Anmeldedaten, um den Spieler zu authentifizieren:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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
Wenn sich ein Nutzer zum ersten Mal anmeldet, wird ein neues Nutzerkonto erstellt und mit seiner Play Games-ID verknüpft. 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.
In Ihrem Spiel können Sie die Firebase-UID des Nutzers aus dem Firebase.Auth.FirebaseUser-Objekt abrufen:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
string playerName = user.DisplayName;
// 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 die Firebase Realtime Database und Cloud Storage können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers über die Variable auth abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Wenn Sie die Spielerinformationen eines Nutzers in Play Games abrufen oder auf Play Games-Dienste zugreifen möchten, verwenden Sie die APIs, die vom Play Games-Plug-in bereitgestellt werden.
Rufen Sie SignOut() auf, um einen Nutzer abzumelden:
auth.SignOut();