Sie können die Google Play Games-Dienste verwenden, um Spieler in einem Android-Spiel anzumelden, das auf Firebase und Unity basiert. Wenn Sie die Google Play Games-Dienste für die Anmeldung mit Firebase verwenden möchten, melden Sie den Spieler zuerst bei Google Play Games an und fordern Sie dabei einen OAuth 2.0-Autorisierungscode an. Übergeben Sie den Autorisierungscode dann an PlayGamesAuthProvider, um Anmeldedaten für Firebase zu generieren, mit denen 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 Ihrem Unity-Projekt hinzufügen beschrieben. Folgen Sie der Anleitung für Android.
Importieren Sie
FirebaseAuth.unitypackage.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 Keystore und einen Schlüssel aus oder erstellen Sie sie, die zum Signieren Ihres Android-Pakets verwendet werden. Ihre APK muss signiert sein, damit die Anmeldung über Play Games funktioniert. Diese Anforderung gilt nicht nur für die Veröffentlichung, sondern auch während der Entwicklung Ihres Spiels.
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
Einstellungen > Tab „Allgemein“ auf.Scrollen Sie nach unten zur Karte Ihre Apps , wählen Sie Ihre Android-App aus und fügen Sie Ihren SHA-1-Fingerabdruck in das Feld SHA-Zertifikat-Fingerabdrücke ein.
Sie können den SHA-1-Fingerabdruck Ihres Schlüssels mit dem Befehl
keytoolabrufen: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.
Ihre APK muss mit diesem Schlüssel signiert sein, auch während der Entwicklung.
Aktivieren Sie Google Play Games als Anmeldeanbieter:
Rufen Sie in der Firebase Console Security > Authentication auf.
Generieren und rufen Sie die Webserver-Client-ID und den Clientschlüssel Ihres Projekts ab:
Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Google.
Kopieren Sie die Webserver-Client-ID und den Clientschlüssel vom Anmeldeanbieter Google.
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 Ihrer Firebase-App konfigurieren
Öffnen Sie in der Google Play Console, 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 Play Games services Konfigurationsseite auf Anmeldedaten hinzufügen.
- Wählen Sie den Typ Spielserver aus.
- Wählen Sie im Feld OAuth-Client die Webclient-ID Ihres Projekts aus. Achten Sie darauf, dass dies dieselbe Client-ID ist, die Sie beim Aktivieren der Play Games Anmeldung angegeben haben.
- Speichern Sie die Änderungen.
Klicken Sie noch einmal auf der Play Games services Konfigurationsseite 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, haben Sie den SHA-1-Fingerabdruck Ihres Spiels möglicherweise nicht in der Firebase Console festgelegt.
- Speichern Sie die Änderungen.
Erstellen Sie auf den Seiten Ereignisse, Erfolge und Bestenlisten alle Play Games Ressourcen, die Sie mit Ihrem Spiel verwenden möchten. Wenn Sie keine sofort verwenden möchten, können Sie einen Platzhalter erstellen. Klicken Sie dann auf einer der Seiten Ereignisse, Erfolge oder Bestenlisten auf Ressourcen abrufen und kopieren Sie den Android-Ressourcenschnipsel an eine geeignete Stelle. Sie benötigen den Schnipsel, um das Google Play Games services Plug-in einzurichten.
Der Ressourcenschnipsel 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 dem 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.Richten Sie das Play Games-Plug-in ein:
- Klicken Sie auf Window > Google Play Games > Setup > Android Setup (Fenster > Google Play Games > Einrichtung > Android-Einrichtung), um den Bildschirm Android Configuration (Android-Konfiguration) zu öffnen.
- Fügen Sie den Android-Ressourcenschnipsel, den Sie in der Play Console erhalten haben, in das Feld Resources Definition (Ressourcendefinition) ein.
- Fügen Sie Ihre Webserver-Client-ID, die Sie beim Aktivieren von Play Games-Anmeldung in der Firebase Console angegeben haben, in das Feld Client ID ein.
- Klicken Sie auf Einrichten.
Konfigurieren Sie in Ihrem Spiel einen Play Games-Client, bei dem die Einstellung
RequestServerAuthCodeaktiviert ist: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 ein Spieler sich dann mit Play Games anmelden möchte, rufen Sie
Social.localUser.Authenticate()auf:Social.localUser.Authenticate((bool success) => { // handle success or failure });
Mit Firebase authentifizieren
Nachdem Sie die Play Games-Anmeldung 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 Handler für die Fortsetzung der Anmeldung 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 Games-Dienste gegen Anmeldedaten für Firebase ein und verwenden Sie die Anmeldedaten für Firebase, 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 Ihres Projekts zu identifizieren.
In Ihrem Spiel können Sie die Firebase-UID des Nutzers aus dem Objekt Firebase.Auth.FirebaseUser 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 aus der Variablen auth abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Wenn Sie die Spielerinformationen eines Nutzers in Play Games abrufen oder auf die 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();