O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Autenticar no Unity usando os serviços de jogos do Google Play

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode usar os serviços do Google Play Games para fazer login de jogadores em um jogo Android criado no Firebase e no Unity. Para usar o login dos serviços do Google Play Games com o Firebase, primeiro faça login no player com o Google Play Games e solicite um código de autenticação OAuth 2.0 ao fazer isso. Em seguida, passe o código de autenticação para PlayGamesAuthProvider para gerar uma credencial do Firebase, que você pode usar para autenticar com o Firebase.

Antes de você começar

Configure seu projeto do Unity

  1. Adicione o arquivo de configuração do Firebase e o SDK do Firebase Unity ao seu projeto do Unity conforme descrito em Adicionar o Firebase ao seu projeto do Unity . Siga as instruções para Android.

    Certifique-se de importar FirebaseAuth.unitypackage .

  2. No Unity Editor, em Build Settings > Player Settings > Other Settings , defina o nome do pacote Android do seu jogo.

  3. Em seguida, em Build Settings > Player Settings > Publishing Settings , selecione ou crie um keystore e uma chave, que serão usados ​​para assinar seu pacote Android. Seu APK precisa estar conectado para que o login do Play Games funcione. Esse requisito se aplica não apenas à publicação, mas também durante o desenvolvimento do jogo.

Configurar seu projeto do Firebase

  1. No console do Firebase , acesse o projeto do Firebase no qual você registrou seu projeto do Unity.

  2. Defina a impressão digital SHA-1 do seu jogo na página Configurações do console Firebase, usando a chave que você definiu no Unity.

    Você pode obter a impressão digital SHA-1 de sua chave com o comando keytool :

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

    Como alternativa, você pode obter o hash SHA do seu certificado de assinatura com o comando signingReport :

    gradlew signingReport

    Seu APK deve ser assinado com essa chave, inclusive durante o desenvolvimento.

  3. Ative o Google Play Games como provedor de login:

    1. Encontre o ID do cliente do servidor da Web e o segredo do cliente do seu projeto. O ID do cliente do servidor da Web identifica seu projeto do Firebase para os servidores de autenticação do Google Play.

      Para encontrar esses valores:

      1. Abra seu projeto do Firebase na página de credenciais do console de APIs do Google .
      2. Na seção IDs do cliente OAuth 2.0 , abra a página de detalhes do cliente Web (criado automaticamente pelo serviço do Google) . Esta página lista o ID e o segredo do cliente do seu servidor web.
    2. Em seguida, no console do Firebase , abra a seção Autenticação .

    3. Na guia Método de login , ative o provedor de login do Play Games . Você precisará especificar o ID do cliente do servidor da Web e o segredo do cliente do seu projeto, obtidos no console de APIs.

Configure os serviços do Play Games com as informações do seu app Firebase

  1. No Google Play Console , abra seu aplicativo Google Play ou crie um.

  2. Na seção Crescer , clique em Serviços do Play Games > Configuração e gerenciamento > Configuração .

  3. Clique em Sim, meu jogo já usa APIs do Google , selecione seu projeto do Firebase na lista e clique em Usar .

  4. Na página de configuração dos serviços do Play Games, clique em Adicionar credencial .

    1. Selecione o tipo de servidor de jogo .
    2. No campo cliente OAuth , selecione o ID do cliente web do seu projeto. Certifique-se de que este seja o mesmo ID de cliente que você especificou quando ativou o login do Play Games.
    3. Salve suas alterações.
  5. Ainda na página de configuração dos serviços do Play Games, clique novamente em Adicionar credencial .

    1. Selecione o tipo de Android .
    2. No campo cliente OAuth , selecione o ID do cliente Android do seu projeto. (Se você não vir seu ID de cliente Android, certifique-se de definir a impressão digital SHA-1 do seu jogo no console do Firebase.)
    3. Salve suas alterações.
  6. Nas páginas Eventos , Conquistas e Placares , crie quaisquer recursos do Play Games que você deseja usar com seu jogo (se não quiser usar nenhum imediatamente, você pode criar uma entrada de espaço reservado). Em seguida, em qualquer uma das páginas de Eventos , Conquistas ou Placares de líderes, clique em Obter recursos e copie o snippet de recursos do Android em algum lugar conveniente. Você precisará do snippet para configurar o plug-in dos serviços do Google Play Games.

    O snippet de recursos se parece com o exemplo a seguir:

    <?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. Na página Testadores , adicione os endereços de e-mail de todos os usuários que precisam fazer login no seu jogo antes de lançá-lo na Play Store.

Integre o login do Play Games ao seu jogo

  1. Baixe a versão mais recente do plug-in do Play Games para Unity e extraia-o.

  2. Importe o pacote Unity do plug-in para seu projeto Unity. Você pode encontrar o pacote do Unity no diretório de current-build do arquivo de lançamento.

  3. Configure o plug-in do Play Games:

    1. Clique em Janela > Google Play Games > Configuração > Configuração do Android para abrir a tela Configuração do Android .
    2. Cole o snippet de recursos do Android que você obteve do console do Play no campo Definição de recursos .
    3. Cole o ID do cliente do servidor da Web fornecido ao ativar o login do Play Games no Firebase console no campo ID do cliente .
    4. Clique em Configurar .
  4. Em seu jogo, configure um cliente do Play Games com a configuração RequestServerAuthCode habilitada:

    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. Então, quando um jogador optar por fazer login com o Play Games, chame Social.localUser.Authenticate() :

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

Autenticar com o Firebase

Depois de adicionar o login do Play Games ao seu jogo, você pode usar o código de autenticação dos serviços do Play Games para se autenticar no Firebase.

  1. Depois que o jogador fizer login usando o Play Games, no gerenciador de continuação de login, obtenha um código de autenticação para a conta do jogador:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Em seguida, troque o código de autenticação dos serviços do Play Games por uma credencial do Firebase e use a credencial do Firebase para autenticar o jogador:

    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);
    });
    

Próximos passos

Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada à ID do Play Games. Essa nova conta é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do seu projeto.

No seu jogo, você pode obter o UID do Firebase.Auth.FirebaseUser do usuário no objeto 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;
}

Nas regras de segurança do Firebase Realtime Database e do Cloud Storage, você pode obter o ID de usuário exclusivo do usuário conectado na variável de auth e usá-lo para controlar quais dados um usuário pode acessar.

Para obter as informações do jogador do Play Games de um usuário ou acessar os serviços do Play Games, use as APIs fornecidas pelo plug-in do Play Games.

Para desconectar um usuário, chame SignOut() :

auth.SignOut();