Integra l'API PGS Recall nel tuo gioco

In questa pagina viene spiegato come implementare l'API Recall nel tuo gioco. Innanzitutto, illustra come configurare il server e il client di gioco per supportare l'API, quindi spiega come memorizzare e recuperare i token.

Configurazione del server di gioco

Configura il server di gioco in modo che effettui chiamate all'API Recall ai server di Google.

Configurare il progetto Servizi per i giochi di Google Play

Se non l'hai già fatto, segui le istruzioni nella sezione Configurazione di Google Play. Servizi per i giochi.

.

Configura un account di servizio per il gioco

Segui le istruzioni per la creazione di un account di servizio. Al termine dovresti avere un file JSON con le credenziali dell'account di servizio.

Scarica la libreria Java lato server per i servizi per i giochi di Play

Scarica la versione più recente di google-api-services-games libreria e caricarlo sul tuo server.

Prepara le credenziali per le chiamate API Recall

Vedi Preparazione per un'API delegata 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 client di gioco in modo da recuperare gli ID sessione di recall utilizzati dal tuo server per comunicare con i server Google.

SDK Java

Configura l'SDK Java all'interno del tuo 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, richiedi un Recupera l'ID sessione dall'SDK client, che invii al server del tuo gioco:

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

Usa l'API Recall nel tuo server di gioco

Dopo aver configurato il server e il client, puoi inviare il recallSessionID dal client di gioco al server di gioco e seguire le indicazioni riportate di seguito per iniziare a utilizzare l'API Java per archiviare, recuperare o eliminare i token di richiamo lato server.

Memorizzare i token

Memorizza l'utente tipo e il token di gioco dell'utente utilizzando l'oggetto LinkPersonaRequest. Usa GoogleCredential per chiamare le API di Google. Per rispettare il vincolo di cardinalità 1:1, puoi collegare una sola persona a un profilo PGS alla volta e viceversa. Imposta il parametro criterio di 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 un TTL sul token, che dichiara la durata di validità del token utilizzando un oggetto Durations. 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 la persona e il token di gioco, che non possono contenere informazioni 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 per persona e giocatore alla volta. Se provi per archiviare un altro token con lo stesso utente tipo, il sistema sovrascrive l'originale di accesso.

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
}

Recuperare i token

Per recuperare il token di richiamo, recupera recallSessionId dal client e passalo all'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
}

Elimina il token di richiamo

Se necessario, puoi anche eliminare il token di richiamo con la seguente chiamata:

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

Attiva modalità senza profilo

Puoi attivare la funzionalità limitata dell'API Recall per gli utenti che non dispongono di profili PGS seguendo questi passaggi:

  1. Attiva il richiamo senza profilo per il tuo progetto di gioco dei servizi per i giochi di Play nello sviluppatore Google Play Google Cloud. Seleziona l&#39;opzione etichettata
  2. Consulta i termini aggiuntivi descritti più avanti in questa sezione.
  3. Aggiungi il seguente tag di metadati nella tua app 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 di utilizzare l'API Recall per agli utenti senza 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.