S'authentifier dans Unity à l'aide des services de jeux Google Play

Vous pouvez utiliser les services de jeux Google Play pour connecter les joueurs à un jeu Android basé sur Firebase et Unity. Pour utiliser la connexion aux services Google Play Jeux avec Firebase, connectez d'abord le joueur avec Google Play Jeux et demandez un code d'autorisation OAuth 2.0. Transmettez ensuite le code d'autorisation à PlayGamesAuthProvider pour générer des identifiants Firebase, que vous pouvez utiliser pour vous authentifier avec Firebase.

Avant de commencer

Configurer votre projet Unity

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

    Veillez à importer FirebaseAuth.unitypackage.

  2. Dans l'éditeur Unity, sous Build Settings > Paramètres du lecteur > Autre Les paramètres définissent le nom du package Android de votre jeu.

  3. Ensuite, sous Build Settings > Paramètres du lecteur > Paramètres de publication, sélectionnez ou créez un keystore et une clé, qui seront utilisés pour signer votre d'un package. Pour que la connexion à Play Jeux fonctionne, votre APK doit être signé. s'applique non seulement à la publication, mais aussi au développement votre jeu.

Configurer 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 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 SHA-1 de votre clé à l'aide de 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 le Commande gradle signingReport:

    gradlew signingReport

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

  3. Activez Google Play Games comme fournisseur de connexion:

    1. Dans la console Firebase, ouvrez le Section Authentication

    2. Générez et obtenez l'ID client et le code secret client du serveur Web de votre projet :

      1. Dans l'onglet Mode de connexion, activez la connexion Google. un fournisseur de services agréé.

      2. Copiez l'ID client et le secret du serveur Web à partir du fournisseur de connexion Google.

    3. Dans l'onglet Mode de connexion, activez Play Games. ainsi que l'ID client du serveur Web de votre projet et que vous avez obtenu à la dernière étape.

Configurer Play Games services avec les informations de votre application Firebase

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

  2. Dans la section Croissance, cliquez sur Play Games services > Configuration et Gestion > Configuration.

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

  4. Sur la page de configuration de Play Games services, cliquez sur Add Credential (Ajouter des identifiants).

    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 celui que vous avez spécifié lorsque vous avez activé la connexion Play Games.
    3. Enregistrez les modifications.
  5. Toujours sur la page de configuration de Play Games services, cliquez à nouveau sur Ajouter des identifiants.

    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 le empreinte SHA-1 dans la console Firebase.)
    3. Enregistrez les modifications.
  6. Sur les pages Événements, Réussites et Classements, créez Play Games ressources que vous souhaitez utiliser avec votre jeu (si vous ne si vous souhaitez utiliser immédiatement n'importe quelle entrée, vous pouvez créer une entrée d'espace réservé). Ensuite, sur l'une des pages Événements, Réussites ou Classements, cliquez sur Obtenez des ressources et copiez l'extrait de ressources Android quelque part. pratiques. Vous en aurez besoin pour configurer Google Play Games services .

    L'extrait de ressources se présente comme suit:

    <?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 ayant besoin de se connecter à votre jeu avant de le publier sur le Play Store

Intégrer la connexion Play Jeux à votre jeu

  1. Téléchargez la dernière version de Plug-in Play Jeux pour Unity et l'extraire.

  2. Importez le package Unity du plug-in dans votre projet Unity. Vous trouverez Package Unity dans le répertoire current-build de l'archive de version.

  3. Configurez le plug-in Play Jeux:

    1. Cliquez sur Window > Google Play Games > Setup > Android Setup (Fenêtre > Google Play Jeux > Configuration > Configuration Android) pour ouvrir l'écran Android Configuration (Configuration Android).
    2. Collez l'extrait de ressources Android que vous avez obtenu dans la Play Console dans le champ Définition des ressources.
    3. Collez l'ID client de serveur Web, que vous avez fourni lors de l'activation. Connectez-vous à Play Jeux dans la console Firebase, dans le Client ID. .
    4. Cliquez sur Configurer.
  4. Dans votre jeu, configurez un client Play Jeux avec le RequestServerAuthCode. paramètre 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 Jeux Play, 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'autorisation fourni par services de jeux Play pour s'authentifier auprès de Firebase.

  1. Une fois que le joueur s'est connecté avec Play Jeux, lors de la connexion utilisez le gestionnaire de continuation, obtenez un code d'autorisation pour le compte du joueur:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Échangez ensuite le code d'autorisation des services de jeux Play contre des identifiants Firebase, puis utilisez les identifiants Firebase pour authentifier le joueur :

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

É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 dans votre projet Firebase. Vous pouvez l'utiliser 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 Firebase.Auth.FirebaseUser :

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
  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 votre base de données Firebase Realtime Database et vos règles de sécurité Cloud Storage, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth et utilisez-le 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 pour accéder aux services Play Jeux, utilisez les API fournies par le plug-in Play Jeux.

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

auth.SignOut();