Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Authentifiez-vous dans Unity à l'aide des services de jeux Google Play

Vous pouvez utiliser les services Google Play Jeux pour connecter des joueurs à un jeu Android basé sur Firebase et Unity. Pour utiliser les services Google Play Jeux, connectez-vous avec Firebase, commencez par vous connecter au lecteur 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 des informations d'identification Firebase, que vous pouvez utiliser pour vous authentifier auprès de Firebase.

Avant que tu commences

Configurer Unity

  1. Ajoutez le fichier de configuration Firebase et le SDK Firebase Unity à votre projet Unity comme décrit dans Ajouter Firebase à votre projet Unity . Suivez les instructions pour Android.

    Assurez-vous d'importer FirebaseAuth.unitypackage .

  2. Dans l'éditeur Unity, sous Paramètres de construction> Paramètres du lecteur> Autres paramètres, définissez le nom du package Android de votre jeu.

  3. Ensuite, sous Paramètres de construction> Paramètres du lecteur> Paramètres de publication , sélectionnez ou créez un fichier de clés et une clé, qui seront utilisés pour signer votre package Android. Votre fichier APK doit être signé pour que la connexion à Play Jeux fonctionne. Cette exigence s'applique non seulement à la publication, mais également pendant le développement de votre jeu.

Configurez votre projet Firebase

  1. Dans la console Firebase , accédez au projet Firebase dans lequel vous avez enregistré votre projet Unity.

  2. Définissez l'empreinte digitale SHA-1 de votre jeu à partir de la page Paramètres de la console Firebase, à l'aide de la clé que vous avez définie dans Unity.

    Vous pouvez obtenir l'empreinte digitale SHA-1 de votre clé avec la commande keytool :

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

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

    gradlew signingReport

    Votre APK doit être signé avec cette clé, y compris pendant le développement.

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

    1. Trouvez 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:

      1. Ouvrez votre projet Firebase sur la page d'informations d'identification de la console des API Google .
      2. 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.
    2. Ensuite, dans la console Firebase , ouvrez la section Authentification .

    3. Dans l'onglet Méthode 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 à partir de la console des API.

  1. Dans la console Google Play , ouvrez votre application ou créez-en une.

  2. Dans la section Grow, cliquez sur Play Games Services> Setup & Management> Configuration .

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

  4. Sur la page de configuration de Play Games Services, cliquez sur Ajouter des informations d'identification .

    1. Sélectionnez le type de serveur de jeu .
    2. 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 vous avez spécifié lorsque vous avez activé la connexion à Play Jeux.
    3. Enregistrez vos modifications.
  5. Toujours sur la page de configuration de Play Games Services, cliquez à nouveau sur Ajouter des informations d'identification .

    1. Sélectionnez le type Android .
    2. Dans le champ client OAuth , sélectionnez l'ID client Android de votre projet. (Si vous ne voyez pas votre ID client Android, assurez-vous de définir l'empreinte digitale SHA-1 de votre jeu dans la console Firebase.)
    3. Enregistrez vos modifications.
  6. Sur les pages Événements , Réalisations et Classements , créez les ressources Play Jeux que vous souhaitez utiliser avec votre jeu (si vous ne souhaitez pas en utiliser immédiatement, vous pouvez créer une entrée d'espace réservé). Ensuite, sur l'une des pages Événements , Réalisations ou Classements , cliquez sur Obtenir des ressources et copiez l'extrait de ressources Android à un endroit pratique. Vous aurez besoin de l'extrait de code pour configurer le plug-in des services de jeux Google Play.

    L'extrait de ressources ressemble à l'exemple suivant:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    Google Play game services IDs.
    Save this file as res/values/games-ids.xml in your project.
    -->
    <resources>
      <!-- app_id -->
      <string name="app_id" translatable="false">123456789000</string>
      <!-- package_name -->
      <string name="package_name" translatable="false">com.example.game</string>
      <!-- event Wiped Raid -->
      <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string>
    </resources>
    
  7. 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 à votre jeu

  1. Téléchargez la dernière version du plug-in Play Games pour Unity et extrayez-la.

  2. Importez le package Unity du plugin dans votre projet Unity. Vous pouvez trouver le package Unity dans le répertoire de current-build de l'archive de version.

  3. Configurez le plugin Play Games:

    1. Cliquez sur Fenêtre> Google Play Jeux> Configuration> Configuration Android pour ouvrir l'écran de configuration Android .
    2. Collez l'extrait de ressources Android que vous avez obtenu de la console Play dans le champ Définition des ressources .
    3. Collez votre ID client de serveur Web, que vous avez fourni lorsque vous avez activé la connexion à Play Jeux dans la console Firebase, dans le champ ID client .
    4. Cliquez sur Setup .
  4. Dans votre jeu, configurez un client Play Jeux avec le paramètre RequestServerAuthCode activé:

    using GooglePlayGames;
    using GooglePlayGames.BasicApi;
    using UnityEngine.SocialPlatforms;
    using System.Threading.Tasks;
    
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
        .RequestServerAuthCode(false /* Don't force refresh */)
        .Build();
    
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.Activate();
    
  5. Ensuite, lorsqu'un joueur choisit de se connecter avec Play Jeux, appelez Social.localUser.Authenticate() :

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

S'authentifier avec Firebase

Après avoir ajouté la connexion Play Jeux à votre jeu, vous pouvez utiliser le code d'authentification des services Play Jeux pour vous authentifier auprès de Firebase.

  1. Une fois que le joueur s'est connecté avec succès à l'aide de Play Jeux, dans le gestionnaire de continuation de la connexion, obtenez un code d'authentification pour le compte du joueur:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Ensuite, échangez le code d'authentification des services Play Jeux contre un identifiant Firebase et utilisez les identifiants Firebase pour authentifier le lecteur:

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Prochaines étapes

Lorsqu'un utilisateur se connecte pour la première fois, un nouveau compte utilisateur est créé et lié à son ID 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 l'UID Firebase de l'utilisateur à partir de l'objet Firebase.Auth.FirebaseUser :

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  string 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 User.TokenAsync() instead.
  string uid = user.UserId;
}

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 des informations sur le joueur Play Games d'un utilisateur ou pour accéder aux services Play Games, utilisez les API fournies par le plug-in Play Games.

Pour déconnecter un utilisateur, appelez SignOut() :

auth.SignOut();