Esta página explica como implementar a API Recall no seu jogo. Primeiro, vamos abordar configurando o servidor de jogos e o cliente para que sejam compatíveis com a API e, em seguida, realiza como armazenar e recuperar tokens.
Configuração do servidor de jogos
Configure o servidor de jogos para fazer chamadas da API Recall para os servidores do Google.
Configurar seu projeto dos serviços relacionados a jogos do Google Play
Siga as instruções em Como configurar os serviços relacionados a jogos do Google Play, caso ainda não tenha feito isso.
Configurar uma conta de serviço para o jogo
Siga as instruções para criar uma conta de serviço. No final, você terá um arquivo JSON com as credenciais da conta de serviço.
Fazer o download da biblioteca Java do lado do servidor para os serviços relacionados a jogos do Google Play
Faça o download do google-api-services-games
mais recente
biblioteca
e fazer o upload para seu servidor.
Preparar credenciais para chamadas da API Recall
Consulte Como se preparar para criar uma API delegada Ligar para mais contexto.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.games.Games;
import com.google.api.services.games.GamesScopes;
// ...
GoogleCredential credential =
GoogleCredential.fromStream(new FileInputStream("<credentials>.json"))
.createScoped(Collections.singleton(GamesScopes.ANDROIDPUBLISHER));
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
Configuração do cliente do jogo
Configure o cliente do jogo para extrair os IDs de sessão de recuperação usados pelo servidor para se comunicar com os servidores do Google.
SDK do Java
Configure o SDK do Java no seu cliente,
e inclua
com.google.android.gms:play-services-games-v2:19.0.0
e
com.google.android.gms:play-services-tasks:18.0.2
ou mais recente no Gradle
.
Para se comunicar com os servidores do Google com as informações corretas, solicite uma Recupere o ID da sessão do SDK do cliente, que você envia ao servidor do jogo:
Kotlin
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener { recallAccess -> val recallSessionId: String = recallAccess.getSessionId() } // Send the recallSessionId to your game server
Java
PlayGames.getRecallClient(getActivity()) .requestRecallAccess() .addOnSuccessListener( recallAccess -> { String recallSessionId = recallAccess.getSessionId(); // Send the recallSessionId to your game server });
Usar a API Recall no servidor do jogo
Depois de configurar o servidor e o cliente, é possível enviar o recallSessionID
do cliente do jogo para o servidor do seu jogo e seguir as orientações abaixo para começar
a usar a API Java para armazenar, extrair ou excluir os tokens de recuperação do lado do servidor.
Armazenar tokens
Armazene o perfil do usuário e o token do jogo usando o objeto LinkPersonaRequest
.
Use o GoogleCredential
para ligar para o Google
APIs.
Para seguir a cardinalidade 1:1
restrição, é possível
vincule apenas um perfil a um perfil dos Serviços relacionados a jogos do Google Play por vez e vice-versa. Defina o
política de resolução caso este perfil dos Serviços relacionados a jogos do Google Play já tenha sido vinculado a outro
perfil.
Opcionalmente, você pode optar por definir um TTL no token, que declara quanto tempo
o token é válido usando um
Durations
objeto. Você pode definir isso usando SetTtl()
(como mostrado abaixo), que define
a data de validade do período especificado no método ou
setExpireTime()
, que permite definir um horário exato de expiração dos tokens.
Você precisa criptografar o perfil e o token do jogo, e eles não podem conter informações de identificação pessoal. As strings de perfis e tokens podem ter no máximo 256 caracteres e podem haver no máximo 20 perfis ou tokens armazenados por jogador em cada jogo.
Somente um token pode ser armazenado por perfil e por jogador em um determinado momento. Se você tentar para armazenar outro token com o mesmo perfil, o sistema com base no token correto anterior.
import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.protobuf.util.Durations;
// ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
String recallSessionId = ... // recallSessionID from game client
String persona = ... // encrypted opaque string, stable for in-game account
String token = ... // encrypted opaque string encoding the progress line
LinkPersonaRequest linkPersonaRequest =
LinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
.setToken(token)
.setCardinalityConstraint(ONE_PERSONA_TO_ONE_PLAYER)
.setConflictingLinksResolutionPolicy(CREATE_NEW_LINK)
.setTtl(Durations.fromDays(7)) // Optionally set TTL for token
.build();
LinkPersonaResponse linkPersonaResponse =
gamesApi.recall().linkPersona(linkPersonaRequest).execute();
if (linkPersonaResponse.getState() == LINK_CREATED) {
// success
}
Extrair tokens
Para extrair o token de recuperação, acesse o recallSessionId
do cliente e
transmiti-lo para a API retrieveTokens
:
import com.google.api.services.games.Games.Recall.RetrieveTokens;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrievePlayerTokensResponse retrievePlayerTokensResponse =
gamesApi.recall().retrieveTokens(recallSessionId).execute();
for (RecallToken recallToken : retrievePlayerTokensResponse.getTokens()) {
String token recallToken.getToken();
// Same string as was written in LinkPersona call
// decrypt and recover in-game account
}
Excluir token de recuperação
Se necessário, também é possível excluir o token de recuperação com esta chamada:
import com.google.api.services.games.Games.Recall.UnlinkPersona;
// ...
String recallSessionId = ...
String persona = ...
String token = ...
Games gamesApi =
new Games.Builder(httpTransport, JSON_FACTORY, credential).build();
UnlinkPersonaRequest unlinkPersonaRequest =
UnlinkPersonaRequest.newBuilder()
.setSessionId(recallSessionId)
.setPersona(persona)
// .setToken(token) - alternatively set token, but not both
.build();
UnlinkPersonaResponse unlinkPersonaResponse =
gamesApi.recall().unlinkPersona(unlinkPersonaRequest).execute();
// Confirm that the unlinking process completed successfully.
boolean unlinked = unlinkPersonaResponse.isUnlinked();
Ativar o modo sem perfil
É possível ativar a funcionalidade limitada da API Recall para usuários que não têm perfis dos Serviços relacionados a jogos do Google Play:
- Ativar o recall sem perfil para seu projeto de jogo dos serviços relacionados a jogos do Google Play (PGS, na sigla em inglês) no Google Play Developer do Cloud.
- Consulte os termos adicionais descritos mais adiante nesta seção.
- Adicione a seguinte tag de metadados ao seu aplicativo manifesto do app:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Termos adicionais
Além de estarem sujeitos aos Termos dos serviços relacionados a jogos do Google Play Service, você concorda que, se usar a API Recall para sem um perfil dos Serviços relacionados a jogos do Google Play, o que permite o compartilhamento dados do usuário final com o Google sem que ele tenha um perfil dos serviços relacionados a jogos do Google Play; antes de compartilhar esses dados com o Google, forneça ao usuário final aviso adequado descrevendo 1) seu compartilhamento dos dados com o Google para ativar Play Games 2) a disponibilidade de configurações para gerenciar compartilhamento, como os nas configurações do Play Games, e 3) o processamento do esses dados de acordo com a Política de Privacidade do Google, política e conseguir informações de usuários finais consentimento para esse compartilhamento que atenda a todos os requisitos legais aplicáveis.