Du kannst Google Play-Spieldienste verwenden, um Spieler in einem Android-Spiel anzumelden
die auf Firebase basieren. Wenn Sie die Google Play-Spieldienste für die Anmeldung in Firebase verwenden möchten,
den Spieler zuerst mit Google Play Spiele anmelden und eine OAuth 2.0-Authentifizierung anfordern
wenn Sie dies tun. Übergeben Sie dann den Autorisierungscode an PlayGamesAuthProvider
,
Firebase-Anmeldedaten generieren, mit denen Sie sich bei Firebase authentifizieren können
Hinweis
Android-Projekt einrichten
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
In der Gradle-Datei des Moduls (auf App-Ebene) (normalerweise
<project>/<app-module>/build.gradle.kts
oder<project>/<app-module>/build.gradle
) Fügen Sie die Abhängigkeit für die Firebase Authentication-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM-Taste zu verwenden, um die Versionierung der Bibliothek zu steuern.Beim Einrichten von Firebase Authentication müssen Sie außerdem die Google Play Services SDK hinzufügen.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0") }Mit dem Firebase Android BoM Ihre App verwendet immer kompatible Versionen der Firebase Android Libraries.
(Alternative) Firebase-Bibliotheksabhängigkeiten ohne BoM hinzufügen
Wenn Sie Firebase BoM nicht verwenden, müssen Sie jede Firebase-Bibliotheksversion angeben in der Abhängigkeitszeile ein.
Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir Ihnen dringend, die Bibliotheksversionen mithilfe der BoM zu verwalten. So wird sichergestellt, dass alle Versionen kompatibel sind.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.0.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0") }
Das Firebase-Projekt einrichten
Legen Sie den SHA-1-Fingerabdruck Ihres Spiels über das Seite Einstellungen der Firebase-Konsole.
Sie können den SHA-Hash Ihres Signaturzertifikats mit dem Befehl gradle
signingReport
abrufen:./gradlew signingReport
Google Play Spiele als Anmeldeanbieter aktivieren:
Suchen Sie die Webserver-Client-ID und den Clientschlüssel Ihres Projekts. Die Webserver-Client-ID identifiziert Ihr Firebase-Projekt für die Google Play-Authentifizierungsserver.
So ermitteln Sie diese Werte:
- Öffnen Sie in der Google APIs Console Ihr Firebase-Projekt.
- Öffnen Sie im Abschnitt OAuth 2.0-Client-IDs den Abschnitt Webclient (automatisch) vom Google-Dienst erstellt). Auf dieser Seite wird Ihr Server-Client-ID und Secret.
Öffnen Sie dann in der Firebase Console den Bereich Authentifizierung.
Aktivieren Sie auf dem Tab Anmeldemethode die Anmeldung in Play Spiele. Dienstanbieter. Sie müssen den Webserver Ihres Projekts angeben Client-ID und Clientschlüssel, die Sie über die APIs-Konsole abgerufen haben.
Play Games services mit Ihren Firebase-App-Informationen 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 Game Server (Spieleserver) 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 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 Ihre Android-Client-ID nicht angezeigt wird, achten Sie darauf, die SHA-1-Fingerabdruck in der Firebase-Konsole.)
- Speichern Sie die Änderungen.
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
Integrieren Sie zuerst die Play Spiele-Anmeldung in Ihre App. Weitere Informationen finden Sie unter In Android-Spielen anmelden .
Verwenden Sie in Ihrer Integration beim Erstellen des GoogleSignInOptions
-Objekts die Methode
DEFAULT_GAMES_SIGN_IN
-Konfiguration und rufen Sie requestServerAuthCode
auf:
Kotlin+KTX
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build()
Java
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build();
Du musst die Client-ID deines Webservers an die Methode requestServerAuthCode
übergeben.
Das ist die ID, die Sie angegeben haben, als Sie die Anmeldung in Play Spiele in der Firebase-Konsole aktiviert haben.
Mit Firebase authentifizieren
Nachdem Sie Ihrer App eine Play Spiele-Anmeldung hinzugefügt haben, müssen Sie Firebase einrichten, um die App verwenden zu können Die Anmeldedaten für das Google-Konto, die Sie erhalten, wenn sich ein Spieler erfolgreich anmeldet mit Play Spiele.
- Rufen Sie zuerst in der
onCreate
-Methode Ihrer Anmeldeaktivität den gemeinsame Instanz desFirebaseAuth
-Objekts:
Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Prüfen Sie beim Initialisieren Ihrer Aktivität, ob der Spieler bereits angemeldet ist. mit Firebase verwenden:
Kotlin+KTX
override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
- Nachdem sich ein Spieler entweder automatisch oder interaktiv bei Play Spiele angemeldet hat, rufe den Authentifizierungscode aus dem
GoogleSignInAccount
-Objekt ab, tausche ihn gegen ein Firebase-Anmeldedaten ein und authentifiziere dich mit Firebase anhand der Firebase-Anmeldedaten:
Kotlin+KTX
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private fun firebaseAuthWithPlayGames(acct: GoogleSignInAccount) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.id!!) val auth = Firebase.auth val credential = PlayGamesAuthProvider.getCredential(acct.serverAuthCode!!) auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } // ... } }
Java
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.getId()); final FirebaseAuth auth = FirebaseAuth.getInstance(); AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode()); auth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = auth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.getException()); Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } // ... } }); }
Wenn der Aufruf von signInWithCredential
erfolgreich war, kannst du die Kontodaten des Nutzers mit der Methode getCurrentUser
abrufen.
Nächste Schritte
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und mit seiner Play Spiele-ID verknüpft. Dieses neue Konto wird als Teil deiner Firebase-Projekt erstellen und zur Identifizierung von Nutzern in jeder App in Ihrem Projekt arbeiten.
In deinem Spiel kannst du die Firebase-UID des Nutzers aus der FirebaseUser
abrufen.
-Objekt enthält:
Kotlin+KTX
val user = auth.currentUser user?.let { val playerName = it.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 FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = mAuth.getCurrentUser(); String playerName = user.getDisplayName(); // 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 FirebaseUser.getIdToken() instead. String uid = user.getUid();
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 über das Google Play Spiele SDK bereitgestellten APIs verwenden
Um einen Nutzer abzumelden, rufen Sie FirebaseAuth.signOut()
auf:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();