Auf dieser Seite wird erläutert, wie du die Recall API in deinem Spiel implementierst. Zuerst wird behandelt, Ihren Spieleserver und Client so einrichten, dass sie die API unterstützen, und gehen Sie dann wie Token gespeichert und abgerufen werden.
Gameserver einrichten
Richte deinen Gameserver so ein, dass Recall API-Aufrufe an Google-Server gesendet werden.
Play-Spieldienste-Projekt einrichten
Falls noch nicht geschehen, folgen Sie der Anleitung unter Google Play einrichten Spieldienste.
Dienstkonto für das Spiel einrichten
Folgen Sie der Anleitung zum Erstellen eines Dienstes Konto. Am Ende sollten Sie eine JSON-Datei mit Anmeldedaten für das Dienstkonto haben.
Serverseitige Java-Bibliothek für Play-Spieldienste herunterladen
Aktuelle Version von google-api-services-games
herunterladen
Mediathek
und laden Sie es auf Ihren Server hoch.
Anmeldedaten für Recall API-Aufrufe vorbereiten
Siehe Erstellen einer delegierten API vorbereiten anrufen .
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();
Einrichtung des Spieleclients
Spieleclient so einrichten, dass die vom Server verwendeten Sitzungs-IDs abgerufen werden mit Google-Servern kommunizieren.
Java SDK
Java SDK im Client einrichten
und stellen Sie sicher,
com.google.android.gms:play-services-games-v2:19.0.0
und
com.google.android.gms:play-services-tasks:18.0.2
oder höher in deinem Gradle-Plug-in
-Datei.
Damit mit den Google-Servern die richtigen Informationen geleitet werden, fordern Sie eine Rufen Sie die Sitzungs-ID aus dem Client-SDK auf, die Sie an den Server Ihres Spiels senden:
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 });
Recall API auf dem Gameserver verwenden
Nachdem du Server und Client konfiguriert hast, kannst du die recallSessionID
senden.
vom Spieleclient an den Gameserver übertragen. Folgen Sie dann der Anleitung unten,
mithilfe der Java API die Recall-Tokens serverseitig speichern, abrufen oder löschen.
Store-Tokens
Speichert die Persona und das Spieltoken des Nutzers mithilfe des LinkPersonaRequest
-Objekts.
GoogleCredential
verwenden, um Google anzurufen
APIs
Einhaltung der 1:1-Kardinalität
haben, können Sie
nur jeweils eine Persona mit einem Play-Spieldienste-Profil verknüpfen und umgekehrt. Legen Sie die
Richtlinie zur Streitbeilegung, falls dieses Play-Spieldienste-Profil bereits mit einem anderen
Persona.
Optional können Sie eine TTL für das Token festlegen, die angibt, wie lange
ist das Token mit einem
Durations
-Objekt enthält. Sie können dies mit SetTtl()
(wie unten gezeigt) festlegen. Dabei werden
das Ablaufdatum in der in der Methode angegebenen Zeit oder
setExpireTime()
, mit dem Sie eine genaue Zeit festlegen können, zu der die Tokens ablaufen.
Sie müssen die Persona und das Spieltoken verschlüsseln und dürfen keine personenbezogenen Daten enthalten identifizierbare Informationen enthalten. Persona- und Tokenstrings dürfen höchstens 256 sein Zeichen lang und maximal 20 Tokens oder Personas pro Spieler pro Spiel.
Pro Persona und Spieler kann jeweils nur ein Token gespeichert werden. Wenn Sie versuchen, um ein weiteres Token mit derselben Persona zu speichern, überschreibt das System das ursprüngliche Token.
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
}
Token abrufen
Um das Recall-Token abzurufen, rufen Sie die recallSessionId
vom Client ab und
übergeben Sie ihn an die retrieveTokens
API:
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
}
Recall-Token löschen
Bei Bedarf können Sie das Recall-Token auch mit dem folgenden Aufruf löschen:
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();
Profillosen Modus aktivieren
Sie können eingeschränkte Funktionen der Recall API aktivieren für Nutzer ohne Play-Spieldienste-Profile:
- Profilloses Recall für dein PGS-Spielprojekt im Play-Entwickler aktivieren
Konsole.
- Lesen Sie die zusätzlichen Bedingungen, die weiter unten in diesem Abschnitt beschrieben werden.
- Fügen Sie Ihrer App das folgende Metadaten-Tag hinzu: Manifest-Datei:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Zusätzliche Bedingungen
Sie unterliegen nicht nur den Nutzungsbedingungen der Play-Spieldienste Dienst erklären Sie sich damit einverstanden, dass Sie die Recall API für Nutzer ohne Play-Spieldienste-Profil, das die Freigabe von Inhalten ermöglicht die Daten des Endnutzers an Google senden, ohne dass er ein Play-Spieldienste-Profil hat, müssen Sie dem Endnutzer vor der Weitergabe solcher Daten an Google einen entsprechenden Hinweis, in dem beschrieben wird, 1) dass Sie die Daten für Google freigeben, um zu ermöglichen, Play Spiele Funktion zur Kontoverknüpfung, 2) Verfügbarkeit von Einstellungen, die verwaltet werden können wie das Teilen von Inhalten, z. B. über die Play Spiele-Einstellungen, und 3) die Verarbeitung von gemäß der Datenschutzerklärung von Google und die geeigneten Endnutzer*innen zu gewinnen. Einwilligung für die Weitergabe erteilt, die alle anwendbaren rechtlichen Erfordernisse erfüllt.