Questa pagina spiega come implementare l'API Recall in il tuo gioco. Innanzitutto, spiega la configurazione del server di gioco e del client per supportare il API, quindi descrive l'archiviazione e il recupero dei token.
Configurazione del server di gioco
Configura il tuo server di gioco per effettuare chiamate API Recall ai server Google.
1. Configurare il progetto dei servizi per i giochi di Play
Se non l'hai già fatto, segui le istruzioni nella sezione Configurazione di Google Play. Servizi per i giochi.
2. Configura un account di servizio per il gioco
Segui le istruzioni sulla creazione di un servizio Google Cloud. Alla fine dovresti avere un file JSON con le credenziali dell'account di servizio.
3. Scarica la libreria Java lato server per PlayGamesServices
Scarica la versione più recente di google-api-services-games libreria e caricarlo sul tuo server.
4. Prepara le credenziali per le chiamate API Recall
Consulta Preparazione per creare un'API autorizzata chiama per saperne di più.
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();
Configurazione del client di gioco
Configura il tuo client di gioco per recuperare gli ID sessione di richiamo utilizzati dal tuo server per comunicare con i server di Google.
SDK Java
Configurare l'SDK Java all'interno del client e
assicurati di includere com.google.android.gms:play-services-games-v2:19.0.0
e com.google.android.gms:play-services-tasks:18.0.2
o superiore nel tuo
gradle.
Per comunicare con i server di Google con le informazioni corrette, devi: richiedere un ID sessione Recall dall'SDK del client, che invii alla console o server web.
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 });
Unity SDK
Se non l'hai ancora fatto, configura l'SDK Unity nel tuo Google Cloud.
Per comunicare con i server di Google con le informazioni corrette, devi: richiedere un ID sessione Recall dall'SDK del client e inviarlo al riquadro o server web.
PlayGamesPlatform.Instance.RequestRecallAccess(
recallAccess => {
string recallSessionId = recallAccess.sessionId;
// Send the recallSessionId to your game server
});
Usa l'API Recall nel tuo server di gioco
Dopo aver configurato il server e il client, puoi inviare recallSessionID
dal tuo client di gioco al server di gioco e segui le indicazioni qui sotto per iniziare
utilizzando l'API Java per archiviare, recuperare o eliminare i token Recall lato server.
Archivia token
Utenti l'utente tipo e il token di gioco possono essere memorizzati usando l'LinkPersonaRequest
. Devi utilizzare GoogleCredential
per chiamare le API di Google (vedi Chiamata
Google
API
per contesto). Tieni presente che, in base alla cardinalità 1:1
di rete, puoi collegare un solo utente tipo
a un profilo dei servizi per i giochi di Play alla volta (e viceversa).Devi impostare la risoluzione
nel caso in cui questo profilo dei servizi per i giochi di Play sia già stato collegato a un altro utente tipo.
Facoltativamente, puoi scegliere di impostare sul token un TTL, che dichiara per quanto tempo
il token sia valido utilizzando
Durate
. Puoi scegliere di farlo utilizzando SetTtl()
(come mostrato di seguito), che imposta
la data di scadenza rispetto alla quantità di tempo specificata nel metodo, oppure
setExpireTime()
, che ti consente di impostare un'ora esatta per la scadenza dei token.
Devi criptare l'utente tipo e il token di gioco, in modo che non possano contenere che consentono l'identificazione personale. Le stringhe di utenti tipo e token possono contenere al massimo 256 caratteri e possono esserci al massimo 20 token o utenti tipo archiviati per giocatore per partita.
È possibile memorizzare un solo token alla volta per utente tipo per giocatore. Stai tentando di un altro token con lo stesso utente tipo sovrascrive il token originale.
import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.api.services.games.model.LinkPersonaRequest;
import com.google.api.services.games.model.LinkPersonaResponse;
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
}
Recupera i token
Esistono tre opzioni per recuperare un token, in base alle caratteristiche dei giochi e alle esigenze aziendali. Puoi richiedi quanto segue:
- I token associati al gioco corrente, inclusi i token Recall con ambito a livello di gioco.
- L'ultimo token memorizzato in tutti i giochi di proprietà dell'account sviluppatore.
- Dato un elenco di giochi di proprietà dell'account sviluppatore, tutti i token Recall associati a ogni gioco.
Token di richiamo basati sui giochi
Per recuperare i token Recall dalla partita corrente, ottieni il
recallSessionId
dal client e passalo all'API retrieveTokens
:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrievePlayerTokensResponse;
import com.google.api.services.games.model.RecallToken;
// ...
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
}
Token di richiamo più recente in tutti i giochi di proprietà dell'account sviluppatore
Per recuperare il token più recente memorizzato in tutti i giochi di proprietà dello sviluppatore.
in Google Play Console, devi ottenere recallSessionId
dal client e passarlo all'API lastTokenFromAllDeveloperGames
,
mostrato nel seguente snippet di codice. Come parte della risposta, puoi esaminare
l'ID applicazione associato
con questo token.
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveDeveloperGamesLastPlayerTokenResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
RetrieveDeveloperGamesLastPlayerTokenResponse response =
gamesApi.recall().lastTokenFromAllDeveloperGames(recallSessionId)
.execute();
if (response.hasGamePlayerToken()) {
GamePlayerToken gamePlayerToken = response.getGamePlayerToken();
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
Tutti i token Recall in un determinato elenco di giochi di proprietà dell'account sviluppatore
Per recuperare tutti i token associati a un elenco di giochi di proprietà di
il tuo account sviluppatore in Google Play Console, scarica recallSessionId
dal client e passarlo all'API gamesPlayerTokens
. Fornisci un
elenco di ID applicazione.
import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveGamesPlayerTokensResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;
// ...
String recallSessionId = ... // recallSessionID from game client
// Application IDs for which you would like to retrieve the recall tokens.
List<String> applicationIds = ...
RetrieveGamesPlayerTokensResponse response =
gamesApiClient
.recall()
.gamesPlayerTokens(recallSessionId)
.setApplicationIds(applicationIds)
.execute();
for (GamePlayerToken gamePlayerToken : response.getGamePlayerTokens()) {
// The ID of the application that the token is associated with.
String applicationId = gamePlayerToken.getApplicationId();
// Same string as was written in LinkPersona call.
RecallToken recallToken = gamePlayerToken.getRecallToken();
// Decrypt and recover in-game account.
}
Elimina token di richiamo
Se necessario, puoi anche eliminare il token di richiamo con la seguente chiamata:
import com.google.api.services.games.Games;
import com.google.api.services.games.model.UnlinkPersonaRequest;
import com.google.api.services.games.model.UnlinkPersonaResponse;
// ...
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();
boolean unlinked = unlinkPersonaResponse.isUnlinked();
Attiva modalità senza profilo
Puoi abilitare funzionalità dell'API Recall limitate. Per gli utenti che non dispongono di profili dei servizi per i giochi di Play:
- Attiva il richiamo senza profilo per il tuo progetto di gioco dei servizi per i giochi di Play nello sviluppatore Google Play
Google Cloud.
- Consulta i termini aggiuntivi descritti più avanti in questa sezione.
- Aggiungi il seguente tag di metadati nella tua app del file manifest:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Termini aggiuntivi
Oltre ad essere soggetti ai Termini dei servizi per i giochi di Play Service, accetti che, qualora puoi utilizzare l'API Recall per gli utenti che non hanno un profilo dei servizi per i giochi di Play, che consente la condivisione i dati dell'utente finale con Google senza che abbia un profilo dei servizi per i giochi di Play; prima di condividere tali dati con Google, devi fornire all'utente finale apposita informativa che descriva 1) la condivisione dei dati da parte dell'utente con Google per consentire Play Giochi funzionalità di collegamento degli account, 2) la disponibilità di impostazioni per gestire come la condivisione tramite le impostazioni di Play Giochi e 3) l'elaborazione tali dati ai sensi delle Norme sulla le norme e procurarti le app appropriate consenso alla condivisione che soddisfi tutti i requisiti legali applicabili.