Mit den Google Play Spiele-Diensten können Sie Spieler in einem Android-Spiel anmelden, das auf Firebase und Unity basiert. Wenn du die Google Play-Spieldienste verwenden möchtest, melde dich mit
Firebase öffnen, melden Sie sich im Player mit Google Play Spiele an und fordern Sie
OAuth 2.0-Authentifizierungscode an. Übergeben Sie dann den Autorisierungscode an
PlayGamesAuthProvider
zum Generieren von Firebase-Anmeldedaten, mit denen du
sich bei Firebase zu authentifizieren.
Hinweis
Unity-Projekt einrichten
Fügen Sie Ihrem Unity-Projekt die Firebase-Konfigurationsdatei und das Firebase Unity SDK hinzu wie in Fügen Sie Firebase zu Ihrem Unity-Projekt hinzu. Folgen Sie der Anleitung für Android.
Achten Sie darauf,
FirebaseAuth.unitypackage
zu importieren.Gehen Sie im Unity Editor unter Build Settings > Player-Einstellungen > Sonstiges Einstellungen legen Sie den Android-Paketnamen Ihres Spiels fest.
Gehen Sie dann zu Build Settings > Player-Einstellungen > Veröffentlichungseinstellungen Einen Schlüsselspeicher und einen Schlüssel auswählen oder erstellen, die zum Signieren Ihres Android-Geräts verwendet werden Paket. Damit die Anmeldung in Play Spiele funktioniert, muss dein APK signiert sein. nicht nur für die Veröffentlichung, sondern auch für die Entwicklung für Ihr Spiel.
Das Firebase-Projekt einrichten
Rufen Sie in der Firebase-Konsole das Firebase-Projekt auf. bei dem Sie Ihr Unity-Projekt registriert haben.
Legen Sie den SHA-1-Fingerabdruck Ihres Spiels über das Seite Einstellungen der Firebase-Konsole mit dem Schlüssel, den Sie in Unity festgelegt haben.
Den SHA-1-Fingerabdruck Ihres Schlüssels können Sie mit dem Befehl
keytool
abrufen:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
Alternativ können Sie den SHA-Hash-Wert Ihres Signaturzertifikats mit der Gradle-Befehl
signingReport
:gradlew signingReport
Dein APK muss auch während der Entwicklung mit diesem Schlüssel signiert werden.
Google Play Games als Anmeldeanbieter aktivieren:
Öffnen Sie in der Firebase-Konsole das Authentication.
Generieren und abrufen Sie die Webserver-Client-ID und das Client-Secret Ihres Projekts:
Aktivieren Sie auf dem Tab Anmeldemethode die Google-Anmeldung. Dienstanbieter.
Kopieren Sie die Webserver-Client-ID und das Secret aus dem Google Log-in Dienstanbieter.
Aktivieren Sie auf dem Tab Anmeldemethode die Option Play Games. und geben Sie die Webserver-Client-ID und Clientschlüssel, den Sie im letzten Schritt abgerufen haben.
Play Games services mit den Informationen Ihrer Firebase-App konfigurieren
Im Google Play-Konsole, öffnen Sie die Google Play App oder erstellen Sie eine.
Klicken Sie im Bereich Wachsen auf Play Games services > Einrichtung und Verwaltung > Konfiguration.
Klicken Sie auf Ja, in meinem Spiel werden bereits Google APIs verwendet und wählen Sie Ihr Firebase-Konto aus. aus der Liste aus und klicken Sie dann auf Verwenden.
Klicken Sie auf der Konfigurationsseite von Play Games services auf Anmeldedaten hinzufügen.
- Wählen Sie den Typ Gameserver aus.
- Wählen Sie im Feld OAuth-Client die Webclient-ID Ihres Projekts aus. Seien Dies ist dieselbe Client-ID, die Sie bei der Aktivierung Play Games-Anmeldung.
- Speichern Sie die Änderungen.
Klicken Sie auf der Konfigurationsseite von Play Games services auf Füge die Anmeldedaten noch einmal hinzu.
- Wählen Sie als Typ Android aus.
- Wählen Sie im Feld OAuth-Client die Android-Client-ID Ihres Projekts aus. Wenn Ihre Android-Client-ID nicht angezeigt wird, achten Sie darauf, die SHA-1-Fingerabdruck in der Firebase-Konsole.)
- Speichern Sie die Änderungen.
Erstellen Sie auf den Seiten Ereignisse, Erfolge und Bestenlisten Play Games Ressourcen, die du für dein Spiel verwenden möchtest (falls du sofort verwenden möchten, können Sie einen Platzhaltereintrag erstellen. Dann, am einer der Seiten Ereignisse, Erfolge oder Bestenlisten Ressourcen abrufen und das Android-Ressourcen-Snippet kopieren praktisch sein. Du benötigst das Snippet, um Google Play Games services 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 in Ihrem Spiel anmelden können, bevor Sie es Play Store
Play Spiele-Anmeldung in dein Spiel integrieren
Laden Sie die neueste Version der Play Spiele-Plug-in für Unity und extrahieren sie.
Importieren Sie das Unity-Paket des Plug-ins in Ihr Unity-Projekt. Sie finden das Unity-Paket im Verzeichnis
current-build
des Release-Archivs.Play Spiele-Plug-in einrichten:
- Klicken Sie auf Fenster > Google Play Spiele > Einrichtung > Android-Einrichtung, um die Android-Konfiguration.
- Fügen Sie das Android-Ressourcen-Snippet, das Sie aus der Play Console erhalten haben, in das Feld Resources Definition (Ressourcendefinition) ein.
- Fügen Sie die Client-ID Ihres Webservers, die Sie bei der Aktivierung der Play Spiele-Anmeldung in der Firebase-Konsole angegeben haben, in das Feld Client-ID ein.
- Klicken Sie auf Einrichten.
Konfiguriere in deinem Spiel einen Play Spiele-Client mit der
RequestServerAuthCode
aktivierte 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 bei Play Spiele anmeldet, ruft er
Social.localUser.Authenticate()
:Social.localUser.Authenticate((bool success) => { // handle success or failure });
Mit Firebase authentifizieren
Nachdem du deinem Spiel eine Play Spiele-Anmeldung hinzugefügt hast, kannst du den Autorisierungscode von Play-Spieldienste zur Authentifizierung bei Firebase.
Nachdem sich der Spieler erfolgreich über Play Spiele angemeldet hat, Continuation-Handler, rufe einen Autorisierungscode für das Konto des Spielers ab:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
Tauschen Sie dann den Authentifizierungscode aus den Play-Spieldiensten gegen Firebase-Anmeldedaten aus und authentifizieren Sie den Spieler mit den Firebase-Anmeldedaten:
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
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und die mit ihrer Play Spiele-ID verknüpft ist. Dieses neue Konto wird als Teil deiner Firebase-Projekt erstellen und zur Identifizierung von Nutzern in jeder App in Ihrem Projekt arbeiten.
In Ihrem Spiel können Sie die Firebase-UID des Nutzers aus der
Objekt Firebase.Auth.FirebaseUser
:
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;
}
Die Firebase Realtime Database und die Cloud Storage-Sicherheitsregeln enthalten folgende Informationen:
Eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth
und für folgende Aktionen verwenden:
festlegen, auf welche Daten
ein Nutzer zugreifen kann.
Um die Play Spiele-Spielerinformationen eines Nutzers zu erhalten oder auf die Play-Spieldienste zuzugreifen, Die vom Play Spiele-Plug-in bereitgestellten APIs verwenden
Um einen Nutzer abzumelden, rufen Sie SignOut()
auf:
auth.SignOut();