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

Vous pouvez utiliser les services Google Play Games pour connecter les 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 Jeux 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 Unity

  1. Ajoutez le fichier de configuration Firebase et l'unité Firebase SDK à 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 de l' unité, sous Paramètres de build> Paramètres du lecteur> Autres paramètres définir le nom du package Android de votre jeu.

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

Configurer votre projet Firebase

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

  2. Réglez votre jeu de l'empreinte SHA-1 de la Paramètres page de la console Firebase, en utilisant la clé définie dans l' unité.

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

    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 gradle signingReport commande:

    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. 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 les événements, les réalisations et les pages Leaderboards, créer des jeux Google Play ressources que vous souhaitez utiliser avec votre jeu (si vous ne voulez pas utiliser tout de suite, vous pouvez créer une entrée d'espace réservé). Puis, sur l' un des événements, réalisations ou pages Leaderboards, cliquez sur Obtenir des ressources et copier les ressources Android snippet quelque part pratique. Vous aurez besoin de l'extrait pour configurer le plug-in Google Play Games Services.

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

  1. Téléchargez la dernière version des Jeux de jeu du plugin pour l' unité et l' extraire.

  2. Importez le package Unity du plugin dans votre projet Unity. Vous pouvez trouver le paquet unité dans la current-build de l'archive de sortie.

  3. Configurez le plug-in Play Jeux :

    1. Cliquez sur Fenêtre> Google Play Jeux> Configuration> Android pour ouvrir l'écran de configuration Android.
    2. Coller les ressources Android snippet vous avez obtenu à partir de la console de jeu dans le champ de la définition des ressources.
    3. Collez votre client serveur Web ID que vous avez fournis lors de l' activation Jouer à des jeux de connexion dans la console Firebase, dans le champ d'identification du client.
    4. Cliquez sur Configuration.
  4. Dans votre jeu, configurer un client Jeu Jeux avec le RequestServerAuthCode paramètre est 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. Puis, quand un joueur choisit de signer avec Jeux de jeu, 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 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 connexion, obtenez un code d'autorisation pour le compte du joueur :

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Ensuite, échangez le code d'autorisation des services Play Jeux contre des identifiants Firebase et 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.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 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 Firebase.Auth.FirebaseUser objet:

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 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 les informations de 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 vous déconnecter un utilisateur, appelez SignOut() :

auth.SignOut();