Cette page explique comment implémenter l'API Recall dans votre jeu. Il couvre d'abord qui configure votre serveur et votre client de jeu pour qu'ils prennent en charge l'API, puis passe par comment stocker et récupérer des jetons.
Configuration du serveur de jeu
Configurez votre serveur de jeu pour effectuer des appels de l'API Recall auprès des serveurs Google.
Configurer votre projet lié aux services de jeux Play
(Si ce n'est pas déjà fait) Suivez les instructions de la section Configurer les services de jeux Google Play.
Configurer un compte de service pour le jeu
Suivez les instructions pour créer un compte de service. À la fin, vous devriez obtenir un fichier JSON contenant les identifiants du compte de service.
Télécharger la bibliothèque Java côté serveur pour les services de jeux Play
Téléchargez la dernière version de google-api-services-games
bibliothèque
et l'importer sur votre serveur.
Préparer les identifiants pour les appels de l'API Recall
Voir Préparer la création d'une API déléguée appel pour plus de contexte.
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();
Configuration du client de jeu
Configurez votre client de jeu de sorte qu'il récupère les ID de session de rappel utilisés par votre serveur pour communiquer avec les serveurs Google.
SDK Java
Configurer le SDK Java dans votre client
et veillez à inclure
com.google.android.gms:play-services-games-v2:19.0.0
et
com.google.android.gms:play-services-tasks:18.0.2
ou version ultérieure dans Gradle
.
Pour communiquer avec les serveurs de Google avec les bonnes informations, demandez un Rappelez l'ID de session du SDK client, que vous envoyez au serveur de votre jeu:
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 });
Utiliser l'API Recall dans votre serveur de jeu
Après avoir configuré votre serveur et votre client, vous pouvez envoyer le recallSessionID
de votre client de jeu à votre serveur de jeu, puis suivre les instructions ci-dessous pour commencer à utiliser l'API Java pour stocker, récupérer ou supprimer les jetons de rappel côté serveur.
Stocker des jetons
Stockez le persona et le jeton de jeu de l'utilisateur à l'aide de l'objet LinkPersonaRequest
.
Utiliser le GoogleCredential
pour appeler Google
API.
Pour suivre la cardinalité de 1:1
, vous pouvez
n'associer qu'un seul persona à un profil PGS à la fois, et inversement. Définissez le paramètre
règle de résolution au cas où ce profil PGS a déjà été associé à un autre
persona.
Vous pouvez éventuellement choisir de définir une valeur TTL pour le jeton, qui déclare la durée
le jeton est valide à l'aide d'un
Durations
. Vous pouvez choisir de définir cette valeur à l'aide de SetTtl()
(comme indiqué ci-dessous), qui définit
la date d'expiration de la période spécifiée dans la méthode ; ou
setExpireTime()
, qui vous permet de définir l'heure d'expiration exacte des jetons.
Vous devez chiffrer le persona et le jeton de jeu, et ils ne peuvent pas contenir d'informations permettant d'identifier personnellement l'utilisateur. Les chaînes de personas et de jetons peuvent comporter jusqu'à 256 caractères, et 20 jetons ou personas au maximum peuvent être stockés par joueur et par jeu.
Un seul jeton par persona et par joueur peut être stocké à la fois. Si vous essayez pour stocker un autre jeton avec le même persona, le système écrase le jeton d'origine à partir d'un jeton d'accès.
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
}
Récupérer des jetons
Pour récupérer le jeton de rappel, obtenez l'identifiant recallSessionId
auprès du client, puis
transmettez-le à l'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
}
Supprimer le jeton de rappel
Si nécessaire, vous pouvez également supprimer le jeton de rappel à l'aide de l'appel suivant :
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();
Activer le mode sans profil
Vous pouvez activer des fonctionnalités limitées de l'API Recall. Pour les utilisateurs qui ne possèdent pas de profil PGS, procédez comme suit:
- Activez le rappel sans profil pour votre projet de jeu PGS dans Play Developer la console Cloud.
- Consultez les conditions supplémentaires décrites plus loin dans cette section.
- Ajoutez la balise de métadonnées suivante à votre application fichier manifeste:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Conditions supplémentaires
En plus d'être soumis aux Conditions d'utilisation des services de jeux Play , vous acceptez que si vous utilisez l'API Recall pour sans profil de services Play Jeux, ce qui permet de partager les données d'un utilisateur final à Google sans qu'il dispose d'un profil de services de jeux Play, vous devez, avant de partager ces données avec Google, fournir à l'utilisateur final les informations décrivant 1) le partage de vos données avec Google afin de Play Jeux fonctionnalité d'association de comptes, 2) la disponibilité des paramètres à gérer comme les partages via les paramètres Play Jeux, et 3) le traitement de ces données conformément aux Règles de confidentialité de Google des règles d'utilisation et d'obtenir l'autorisation obtenir un consentement pour un tel partage qui réponde à toutes les obligations légales applicables.