Vous pouvez utiliser les services Google Play Games pour connecter les joueurs à un jeu Android basé sur Firebase. Pour utiliser les services Google Play Games, connectez-vous avec Firebase, connectez d'abord le joueur avec Google Play Games et demandez un code d'authentification OAuth 2.0 lorsque vous le faites. Ensuite, transmettez le code d'authentification à PlayGamesAuthProvider
pour générer un identifiant Firebase, que vous pouvez utiliser pour vous authentifier auprès de Firebase.
Avant que tu commences
Configurez votre projet Android
Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android .
Dans le fichier Gradle de votre module (au niveau de l'application) (généralement
<project>/<app-module>/build.gradle.kts
ou<project>/<app-module>/build.gradle
), ajoutez la dépendance pour l'authentification Firebase. bibliothèque pour Android. Nous vous recommandons d'utiliser la BoM Android Firebase pour contrôler la gestion des versions de la bibliothèque.De plus, dans le cadre de la configuration de l'authentification Firebase, vous devez ajouter le SDK des services Google Play à votre application.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.7.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:20.7.0") }En utilisant Firebase Android BoM , votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
Vous recherchez un module de bibliothèque spécifique à Kotlin ? À partir d' octobre 2023 (Firebase BoM 32.5.0) , les développeurs Kotlin et Java peuvent s'appuyer sur le module de bibliothèque principal (pour plus de détails, consultez la FAQ sur cette initiative ).(Alternative) Ajouter des dépendances de la bibliothèque Firebase sans utiliser la BoM
Si vous choisissez de ne pas utiliser la BoM 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 de bibliothèque, ce qui garantit que toutes les versions sont compatibles.
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:22.3.0")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:20.7.0") }
Configurez votre projet Firebase
Définissez l'empreinte digitale SHA-1 de votre jeu depuis la page Paramètres de la console Firebase.
Vous pouvez obtenir le hachage SHA de votre certificat de signature avec la commande gradle
signingReport
:./gradlew signingReport
Activez Google Play Jeux en tant que fournisseur de connexion :
Recherchez l'ID client du serveur Web et le secret client de votre projet. L'ID client du serveur Web identifie votre projet Firebase auprès des serveurs d'authentification Google Play.
Pour trouver ces valeurs :
- Ouvrez votre projet Firebase sur la page d'informations d'identification de la console des API Google .
- Dans la section ID client OAuth 2.0 , ouvrez la page de détails du client Web (créé automatiquement par le service Google) . Cette page répertorie l'ID client et le secret de votre serveur Web.
Ensuite, dans la console Firebase , ouvrez la section Authentification .
Dans l'onglet Méthode de connexion , activez le fournisseur de connexion Play Games . Vous devrez spécifier l'ID client du serveur Web et le secret client de votre projet, que vous avez obtenus à partir de la console des API.
Configurer les services Play Jeux avec les informations de votre application Firebase
Dans la console Google Play , ouvrez votre application Google Play ou créez-en une.
Dans la section Grow , cliquez sur Services Play Games > Configuration et gestion > Configuration .
Cliquez sur Oui, mon jeu utilise déjà les API Google , sélectionnez votre projet Firebase dans la liste, puis cliquez sur Utiliser .
Sur la page de configuration des services Play Games, cliquez sur Ajouter des informations d'identification .
- Sélectionnez le type de serveur de jeu .
- Dans le champ Client OAuth , sélectionnez l'ID client Web de votre projet. Assurez-vous qu'il s'agit du même ID client que celui que vous avez spécifié lorsque vous avez activé la connexion à Play Jeux.
- Enregistrez vos modifications.
Toujours sur la page de configuration des services Play Games, cliquez à nouveau sur Ajouter des informations d'identification .
- Sélectionnez le type d'Android .
- Dans le champ Client OAuth , sélectionnez l'ID client Android de votre projet. (Si vous ne voyez pas votre identifiant client Android, assurez-vous de définir l'empreinte digitale SHA-1 de votre jeu dans la console Firebase.)
- Enregistrez vos modifications.
Sur la page Testeurs , ajoutez les adresses e-mail de tous les utilisateurs qui doivent pouvoir se connecter à votre jeu avant de le publier sur le Play Store.
Intégrez la connexion à Play Jeux dans votre jeu
Tout d’abord, intégrez la connexion à Play Games dans votre application. Consultez Se connecter aux jeux Android pour obtenir des instructions complètes.
Dans votre intégration, lorsque vous créez l'objet GoogleSignInOptions
, utilisez la configuration DEFAULT_GAMES_SIGN_IN
et appelez requestServerAuthCode
:
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();
Vous devez transmettre l'ID client de votre serveur Web à la méthode requestServerAuthCode
. 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 Games à 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 à Play Games.
- Tout d'abord, dans la méthode
onCreate
de votre activité de connexion, récupérez l'instance partagée de l'objetFirebaseAuth
:
Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Lors de l'initialisation de votre activité, vérifiez si le joueur est déjà connecté à Firebase :
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.
- Une fois qu'un joueur s'est connecté à Play Games de manière silencieuse ou interactive, récupérez le code d'authentification de l'objet
GoogleSignInAccount
, échangez-le contre un identifiant Firebase et authentifiez-vous auprès de Firebase à l'aide de l'identifiant Firebase :
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); } // ... } }); }
Si l'appel à signInWithCredential
réussit, vous pouvez utiliser la méthode getCurrentUser
pour obtenir les données du compte de l'utilisateur.
Prochaines étapes
Après qu'un utilisateur se connecte pour la première fois, un nouveau compte utilisateur est créé et lié à son identifiant Play Games. 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 l'UID Firebase de l'utilisateur à partir de l'objet FirebaseUser
:
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();
Dans vos règles de sécurité de base de données en temps réel Firebase et de stockage cloud, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth
et l'utiliser pour contrôler les données auxquelles un utilisateur peut accéder.
Pour obtenir les informations sur le joueur Play Games d'un utilisateur ou pour accéder aux services Play Games, utilisez les API fournies par le SDK Google Play Games .
Pour déconnecter un utilisateur, appelez FirebaseAuth.signOut()
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();