Vous pouvez utiliser les services de jeux Google Play pour connecter les joueurs à un jeu Android conçu sur Firebase. Pour utiliser la connexion aux services de jeux Google Play avec Firebase, commencez par connecter le joueur à Google Play Jeux et demandez un code d'authentification OAuth 2.0. Ensuite, transmettez le code d'authentification à PlayGamesAuthProvider
pour générer des identifiants Firebase, que vous pourrez utiliser pour vous authentifier auprès de Firebase.
Avant de commencer
Configurer votre projet Android
Si ce n'est pas encore 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 la bibliothèque Firebase Authentication pour Android. Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler le versionnage de la bibliothèque.De plus, pour configurer Firebase Authentication, 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:34.0.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.3.0") }En utilisant la Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
(Alternative) Ajoutez les dépendances de la bibliothèque Firebase sans utiliser BoM.
Si vous choisissez de ne pas utiliser Firebase BoM, vous devez spécifier la version de chaque bibliothèque Firebase sur sa ligne de dépendance.
Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons vivement d'utiliser BoM pour gérer les versions des bibliothèques, 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:24.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.3.0") }
Configurer votre projet Firebase
Définissez l'empreinte SHA-1 de votre jeu sur 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 d'identité :
Trouvez l'ID client et le code secret du client du serveur Web 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, procédez comme suit :
- Ouvrez votre projet Firebase sur la page des identifiants de la console Google APIs.
- Dans la section ID clients OAuth 2.0, ouvrez la page d'informations Client Web (créé automatiquement par le service Google). Cette page liste l'ID client et le code secret de votre serveur Web.
Ensuite, dans la console Firebase, ouvrez la section Authentification.
Dans l'onglet Mode de connexion, activez le fournisseur de connexion Play Jeux. Vous devrez spécifier l'ID client et le secret client du serveur Web de votre projet, que vous avez obtenus dans la console APIs.
Configurez Play Games services 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 Croissance, cliquez sur Play Games services > Configuration et gestion > Configuration.
Cliquez sur Oui, mon jeu utilise déjà des API Google, sélectionnez votre projet Firebase dans la liste, puis cliquez sur Utiliser.
Sur la page de configuration Play Games services, cliquez sur Ajouter un identifiant.
- Sélectionnez le type 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 Games.
- Enregistrez les modifications.
Toujours sur la page de configuration Play Games services, cliquez à nouveau sur Ajouter des identifiants.
- Sélectionnez le type Android.
- Dans le champ Client OAuth, sélectionnez l'ID client Android de votre projet. (Si votre ID client Android ne s'affiche pas, assurez-vous d'avoir défini l'empreinte SHA-1 de votre jeu dans la console Firebase.)
- Enregistrez les modifications.
Sur la page Testeurs, ajoutez les adresses e-mail des utilisateurs qui doivent pouvoir se connecter à votre jeu avant sa publication sur Play Store.
Intégrer la connexion à Play Jeux dans votre jeu
Commencez par intégrer la connexion Play Jeux à votre application. Pour obtenir des instructions complètes, consultez Se connecter pour les jeux Android.
Dans votre intégration, lorsque vous créez l'objet GoogleSignInOptions
, utilisez la configuration DEFAULT_GAMES_SIGN_IN
et appelez requestServerAuthCode
:
Kotlin
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 Jeux à votre application, vous devez configurer Firebase pour utiliser les identifiants de compte Google que vous obtenez lorsqu'un joueur se connecte à Play Jeux.
- Tout d'abord, dans la méthode
onCreate
de votre activité de connexion, obtenez l'instance partagée de l'objetFirebaseAuth
:
Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Lorsque vous initialisez votre activité, vérifiez si le joueur est déjà connecté à Firebase :
Kotlin
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 Jeux de manière silencieuse ou interactive, récupérez le code d'authentification à partir de l'objet
GoogleSignInAccount
, échangez-le contre des identifiants Firebase et authentifiez-vous auprès de Firebase à l'aide des identifiants Firebase :
Kotlin
// 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.
Étapes suivantes
Lorsqu'un utilisateur se connecte pour la première fois, un compte utilisateur est créé et associé à son ID Play Jeux. Ce nouveau compte est stocké dans votre projet Firebase et peut être utilisé pour identifier un utilisateur dans toutes les applications de votre projet.
Dans votre jeu, vous pouvez obtenir l'UID Firebase de l'utilisateur à partir de l'objet FirebaseUser
:
Kotlin
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é Firebase Realtime Database et Cloud Storage, 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 Jeux d'un utilisateur ou accéder aux services de jeux Play, utilisez les API fournies par le SDK Google Play Jeux.
Pour déconnecter un utilisateur, appelez FirebaseAuth.signOut()
:
Kotlin
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();