Catch up on everthing we announced at this year's Firebase Summit. Learn more

S'authentifier à l'aide des services de jeux Google Play sur Android

Vous pouvez utiliser les services Google Play Games pour connecter les joueurs à un jeu Android basé sur Firebase. Pour utiliser la connexion aux services Google Play Games avec Firebase, connectez d'abord le joueur à Google Play Games et demandez un code d'autorisation OAuth 2.0 lorsque vous le faites. Ensuite, passez le code auth à PlayGamesAuthProvider pour générer un titre Firebase, que vous pouvez utiliser pour authentifier avec Firebase.

Avant que tu commences

Configurer votre projet Android

  1. Si vous avez pas déjà, ajoutez Firebase à votre projet Android .

  2. Utilisation de la Firebase Android BoM , déclarer la dépendance de la bibliothèque d' authentification Firebase Android dans votre module (app-niveau) de fichier Gradle (généralement app/build.gradle ).

    De plus, dans le cadre de la configuration de l'authentification Firebase, vous devez ajouter le SDK des services Google Play à votre application.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // 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'
    }

    En utilisant le Firebase Android BoM , votre application utilise toujours des versions compatibles des bibliothèques Firebase Android.

    (Alternative) déclarer des dépendances de bibliothèque firebase sans utiliser la nomenclature

    Si vous choisissez de ne pas utiliser la nomenclature de Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.

    Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons fortement d' utiliser la BoM pour gérer les versions bibliothèque, ce qui garantit que toutes les versions sont compatibles.

    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:29.0.0')
    
        // 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'
    }

    En utilisant le Firebase Android BoM , votre application utilise toujours des versions compatibles des bibliothèques Firebase Android.

    (Alternative) déclarer des dépendances de bibliothèque firebase sans utiliser la nomenclature

    Si vous choisissez de ne pas utiliser la nomenclature de Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.

    Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons fortement d' utiliser la BoM pour gérer les versions bibliothèque, ce qui garantit que toutes les versions sont compatibles.

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

Configurer votre projet Firebase

  1. Réglez votre jeu de l'empreinte SHA-1 de la Paramètres page de la console Firebase.

    Vous pouvez obtenir le hachage SHA de votre certificat de signature avec le gradle signingReport commande:

    ./gradlew signingReport

  2. Activez Google Play Jeux en tant que fournisseur de connexion :

    1. Recherchez l'ID client et le secret client du serveur Web de votre projet. L'ID client du serveur Web identifie votre projet Firebase auprès des serveurs d'authentification de Google Play.

      Pour trouver ces valeurs :

      1. Ouvrez votre projet Firebase dans la console API Google les informations d' identification page.
      2. Dans la section ID client OAuth 2.0, ouvrez le client Web (auto créé par le service Google) Détails Page. Cette page répertorie l'ID client et le secret de votre serveur Web.
    2. Puis, dans la console Firebase , ouvrez la section d' authentification.

    3. Sur l'onglet Connexion méthode, activez le jeu Jeux de connexion fournisseur. Vous devrez spécifier l'ID client et le secret client du serveur Web de votre projet, que vous avez obtenus à partir de la console des API.

  1. Dans la console Google Play , ouvrez votre application ou en créer un.

  2. Dans la section Grandissez, cliquez sur Emettre Jeux Services> Configuration et gestion> Configuration.

  3. Cliquez sur Oui, mon jeu utilise déjà des API Google, sélectionnez le nom de votre projet Firebase dans la liste, puis cliquez sur Utiliser.

  4. Sur la page de configuration Play Games Services, cliquez sur Ajouter des titres de compétences.

    1. Sélectionnez le type de serveur de jeu.
    2. Dans le champ client OAuth, sélectionnez client Web de votre projet ID. Assurez-vous qu'il s'agit du même ID client que vous avez spécifié lorsque vous avez activé la connexion à Play Jeux.
    3. Enregistrez vos modifications.
  5. Toujours sur la page de configuration Lecture Jeux Services, cliquez sur Ajouter à nouveau des titres de compétences.

    1. Sélectionnez le type Android.
    2. Dans le champ client OAuth, sélectionnez ID client Android de votre projet. (Si vous ne voyez pas votre ID client Android, assurez-vous de définir l'empreinte SHA-1 de votre jeu dans la console Firebase.)
    3. Enregistrez vos modifications.
  6. Sur la page testeurs, ajoutez les adresses e - mail de tous les utilisateurs qui ont besoin d' être en mesure de vous connecter à votre jeu avant de le libérer sur le Google Play Store.

Intégrez la connexion Play Jeux à votre jeu

Tout d'abord, intégrez la connexion Play Jeux dans votre application. Voir Connectez - vous pour Android Jeux pour les instructions complètes.

Dans votre intégration, lorsque vous créez l' GoogleSignInOptions objet, utilisez la DEFAULT_GAMES_SIGN_IN configuration et appel 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()

Vous devez passer votre client serveur Web ID à la requestServerAuthCode méthode. Il s'agit de l'ID que vous avez fourni lorsque vous avez activé la connexion à Play Jeux dans la console Firebase.

S'authentifier avec Firebase

Après avoir ajouté la connexion Play Jeux à votre application, vous devez configurer Firebase pour utiliser les informations d'identification du compte Google que vous obtenez lorsqu'un joueur se connecte avec succès avec Play Jeux.

  1. Tout d' abord, dans votre signe dans l' activité de onCreate méthode, obtenir l'instance partagée du FirebaseAuth objet:

Java

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

Kotlin+KTX

private lateinit var auth: FirebaseAuth
// ...
// Initialize Firebase Auth
auth = Firebase.auth
  1. Lors de l'initialisation de votre activité, vérifiez si le joueur est déjà connecté à Firebase :

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. Après un joueur signe en jeu avec jeux soit en mode silencieux ou de manière interactive, obtenir le code d'authentification de l' GoogleSignInAccount objet, échanger pour un titre Firebase et authentifiez Firebase en utilisant les informations d' identification Firebase:

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

                // ...
            }
}

Si l'appel à signInWithCredential réussit , vous pouvez utiliser la getCurrentUser méthode pour obtenir des données de compte de l'utilisateur.

Prochaines étapes

Lorsqu'un utilisateur se connecte pour la première fois, un nouveau compte utilisateur est créé et lié à son identifiant Play Jeux. Ce nouveau compte est stocké dans le cadre de votre projet Firebase et peut être utilisé pour identifier un utilisateur dans chaque application de votre projet.

Dans votre jeu, vous pouvez obtenir UID Firebase de l'utilisateur du FirebaseUser objet:

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
}

Dans votre base de données et en temps réel Firebase Cloud Storage Les règles de sécurité, vous pouvez obtenir la signature dans ID d'utilisateur unique de l' utilisateur de la auth variable et l' utiliser pour contrôler les données d' un accès utilisateur peut.

Pour obtenir une informations Jeux de jeu d' un joueur utilisateur ou l' accès immédiat aux services de jeux, utilisez les API fournies par le SDK Google Play Jeux .

Pour vous déconnecter un utilisateur, appelez FirebaseAuth.signOut() :

Java

FirebaseAuth.getInstance().signOut();

Kotlin+KTX

Firebase.auth.signOut()