Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Authentifizieren Sie sich mit den Google Play-Spieldiensten auf Android

Sie können die Google Play Games-Dienste verwenden, um Spieler bei einem Android-Spiel anzumelden, das auf Firebase basiert. Um die Anmeldung bei den Google Play Games-Diensten mit Firebase zu verwenden, melden Sie sich zuerst bei Google Play Games an und fordern Sie dabei einen OAuth 2.0-Authentifizierungscode an. Dann übergeben Sie den Auth - Code zu PlayGamesAuthProvider eine Firebase Berechtigungsnachweis zu generieren, die Sie mit Firebase authentifizieren können.

Bevor Sie beginnen

Richten Sie Ihr Android-Projekt ein

  1. Wenn Sie nicht bereits haben, fügen Sie Firebase zu dem Android - Projekt .

  2. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die Firebase Authentifizierung Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).

    Als Teil der Einrichtung von Firebase Authentication müssen Sie außerdem das SDK für die Google Play-Dienste zu Ihrer App hinzufügen.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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 declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:19.2.0'
    }

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

    dependencies {
        // Declare 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:21.0.1'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:19.2.0'
    }

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // Declare 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-ktx'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:19.2.0'
    }

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

    dependencies {
        // Declare 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-ktx:21.0.1'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:19.2.0'
    }

Richten Sie Ihr Firebase-Projekt ein

  1. Legen Sie Ihre Spiele SHA-1 Fingerabdruck aus der Settings - Seite der Konsole Firebase.

    Sie können den SHA - Hash Ihres Signaturzertifikats mit dem gradle erhalten signingReport Befehl:

    ./gradlew signingReport

  2. Aktivieren Sie Google Play Games als Anmeldeanbieter:

    1. Suchen Sie die Webserver-Client-ID und das Client-Geheimnis Ihres Projekts. Die Webserver-Client-ID identifiziert Ihr Firebase-Projekt gegenüber den Google Play-Authentifizierungsservern.

      So finden Sie diese Werte:

      1. Öffnen Sie Ihr Firebase - Projekt in der Google APIs - Konsole Anmeldeinformationen Seite.
      2. In dem OAuth 2.0 - Client - IDs Abschnitt, öffnen Sie den Web - Client (automatisch erstellt von Google Service) Detailseite. Auf dieser Seite werden Ihre Webserver-Client-ID und Ihr Geheimnis aufgeführt.
    2. Dann wird in der Firebase Konsole , öffnen den Abschnitt Authentication.

    3. Auf dem Anmelden Methode Registerkarte, aktivieren Sie die Play Games-Anmeldung Anbieter. Sie müssen die Webserver-Client-ID und das Client-Geheimnis Ihres Projekts angeben, die Sie von der APIs-Konsole erhalten haben.

  1. In der Google Play - Konsole , öffnen Sie Ihre App oder erstellen.

  2. In GROW Abschnitt, klicken Sie auf Spiele Play - Dienste> Setup & Management> Konfiguration.

  3. Klicken Sie auf Ja, mein Spiel bereits benutzt Google APIs, wählen Sie den Namen Ihrer Firebase Projekt aus der Liste, und klicken Sie auf Verwenden.

  4. Auf der Play Games Services - Konfiguration Seite, klicken Sie auf Hinzufügen Credential.

    1. Wählen Sie das Spiel Servertyp.
    2. Im OAuth Client - Feld, wählen Sie Ihr Projekt ID Web - Client. Stellen Sie sicher, dass dies dieselbe Client-ID ist, die Sie bei der Aktivierung der Play Spiele-Anmeldung angegeben haben.
    3. Speichern Sie Ihre Änderungen.
  5. Noch immer auf der Play Games Services - Konfiguration Seite, klicken Sie auf Hinzufügen erneut Credential.

    1. Wählen Sie die Android - Typ.
    2. Im OAuth Client - Feld, wählen Sie Ihr Projekt Android - Client - ID. (Wenn Ihre Android-Client-ID nicht angezeigt wird, stellen Sie sicher, dass Sie den SHA-1-Fingerabdruck Ihres Spiels in der Firebase-Konsole festlegen.)
    3. Speichern Sie Ihre Änderungen.
  6. Auf der Tester Seite, fügen Sie die E - Mail - Adressen der Benutzer, die sich in Ihrem Spiel zu unterschreiben können , bevor Sie es in der Play Store veröffentlichen.

Integrieren Sie die Play Games-Anmeldung in Ihr Spiel

Integrieren Sie zunächst die Play Games-Anmeldung in Ihre App. Siehe Anmelden bei Android - Spiele für die vollständigen Anweisungen.

In Ihrer Integration, wenn Sie den Aufbau GoogleSignInOptions Objekt, verwenden Sie die DEFAULT_GAMES_SIGN_IN Konfiguration und Aufruf requestServerAuthCode :

Java

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
        .requestServerAuthCode(getString(R.string.default_web_client_id))
        .build();

Kotlin+KTX

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
        .requestServerAuthCode(getString(R.string.default_web_client_id))
        .build()

Sie müssen Ihren Web - Server - Client - ID an den Pass requestServerAuthCode Methode. Dies ist die ID, die Sie angegeben haben, als Sie die Play Spiele-Anmeldung in der Firebase-Konsole aktiviert haben.

Mit Firebase authentifizieren

Nachdem Sie die Play Games-Anmeldung zu Ihrer App hinzugefügt haben, müssen Sie Firebase so einrichten, dass die Anmeldedaten für das Google-Konto verwendet werden, die Sie erhalten, wenn sich ein Spieler erfolgreich bei Play Games anmeldet.

  1. Zuerst in der Anmelde-Aktivität der onCreate Methode, erhalten die gemeinsame Instanz des FirebaseAuth Objekts:

Java

private FirebaseAuth mAuth;
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();

Kotlin+KTX

private lateinit var auth: FirebaseAuth
// ...
// Initialize Firebase Auth
auth = Firebase.auth
  1. Überprüfen Sie beim Initialisieren Ihrer Aktivität, ob der Spieler bereits bei Firebase angemeldet ist:

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);
}

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)
}
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
  1. Nachdem ein Spieler Zeichen mit Play Games entweder still oder interaktiv, erhalten den Auth - Code aus dem GoogleSignInAccount Objekt, es für einen Berechtigungsnachweis Firebase auszutauschen und Authentifizieren mit Firebase der Firebase Berechtigungsnachweis verwenden:

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);
                    }

                    // ...
                }
            });
}

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)
                }

                // ...
            }
}

Wenn der Aufruf von signInWithCredential gelingt es können Sie die Verwendung getCurrentUser Methode des Benutzers Kontodaten zu erhalten.

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal anmeldet, wird ein neues Benutzerkonto 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 jeder App in Ihrem Projekt zu identifizieren.

In Ihrem Spiel, können Sie die Benutzerfirebase UID aus dem bekommen FirebaseUser Objekt:

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();

Kotlin+KTX

val user = auth.currentUser
user?.let {
    val 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 FirebaseUser.getIdToken() instead.
    val uid = user.uid
}

In Ihrer Datenbank und Firebase Realtime Cloud Storage Sicherheitsregeln, können Sie die angemeldeten Nutzer die eindeutige Benutzer - ID aus der bekommen auth Variable, und es verwenden , um steuern kann ein Benutzer Zugriff , welche Daten.

Um ein Benutzer Play Games Spieler Informationen oder den Zugriff auf Play Games - Dienste zu erhalten, verwenden die bereitgestellten APIs von der Google Play Games SDK .

Um einen Benutzer abzumelden, rufen FirebaseAuth.signOut() :

Java

FirebaseAuth.getInstance().signOut();

Kotlin+KTX

Firebase.auth.signOut()