Autenticação de plataforma para jogos Android

Para acessar a funcionalidade dos serviços relacionados a jogos do Google Play, seu jogo precisa fornecer a conta do jogador autenticado. Esta documentação descreve como implementar uma experiência de autenticação perfeita no seu jogo.

O SDK dos serviços relacionados a jogos do Google Play v2 traz uma série de melhorias que aumentam o número de usuários autenticados no jogo e facilitam o desenvolvimento:

  • Melhorias para os usuários:
    • Depois de selecionar uma conta padrão, os usuários são autenticados sem precisar interagir com uma solicitação.
    • Os usuários não precisam mais fazer o download do app Play Games para se autenticar nos serviços relacionados a jogos do Google Play nem criar uma nova conta.
    • Agora os usuários podem gerenciar as contas dos serviços relacionados a jogos do Google Play para vários jogos em uma única página.
  • Melhorias para desenvolvedores:
  • O código do cliente não precisa mais processar o fluxo de autenticação ou saída, já que o login é acionado automaticamente quando o jogo é iniciado, e o gerenciamento da conta é processado nas configurações do SO.

Integração de novos clientes

Esta seção mostra como fazer uma integração de novos clientes com o login dos serviços relacionados a jogos do Google Play v2.

Adicionar a dependência

Adicione a dependência do SDK dos serviços relacionados a jogos do Google Play ao arquivo build.gradle no nível raiz do app. Se você estiver usando o Gradle, vai poder adicionar ou atualizar a dependência da seguinte maneira:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Definir o ID do projeto

Para adicionar o ID do projeto do SDK dos serviços relacionados a jogos do Google Play ao seu app, siga estas etapas:

  1. No arquivo AndroidManifest.xml do seu app, adicione o seguinte elemento <meta-data> e atributos ao elemento <application>:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Defina a referência @string/game_services_project_id do recurso de string usando o ID do projeto do jogo nos serviços relacionados a jogos como o valor. O ID do projeto nos serviços relacionados a jogos pode ser encontrado abaixo do nome do jogo na página Configuração do Google Play Console.

  2. No seu arquivo res/values/strings.xml, adicione uma referência de recurso de string e defina o ID do projeto como o valor. No Google Play Console, você encontra o ID do projeto abaixo do nome do jogo na página Configuração. Exemplo:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

Inicializar o SDK

Inicialize o SDK do Play Games no callback onCreate(..) da classe Application.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

Receber o resultado da autenticação

Quando o jogo é iniciado, ele sempre tenta autenticar o usuário. Para autenticar o usuário, você precisa verificar se ele fez login e, em seguida, receber o ID do jogador.

Para verificar a tentativa de autenticação, chame GamesSignInClient.isAuthenticated() e use addOnCompleteListener para recuperar os resultados. Exemplo:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Se o usuário optar por não se autenticar quando o jogo for iniciado, é recomendado que você continue mostrando um botão com o ícone do Play Games ou apresente ao usuário uma tela de login com um botão com o ícone do Play Games como uma das opções de autenticação e tente autenticar o usuário novamente chamando GamesSignInClient.signIn() se ele pressionar o botão. Depois de verificar se o usuário está autenticado, você pode recuperar o ID do jogador para identificá-lo. Exemplo:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);