Z tego artykułu dowiesz się, jak wdrożyć interfejs Recall API w Twojej gry. Najpierw zajmujemy się konfigurowaniem serwera gry i klienta do obsługi API, a następnie pokazuje, jak przechowywać i odbierać tokeny.
Konfiguracja serwera gry
Skonfiguruj serwer gry, aby wywoływać interfejs Recall API na serwery Google.
1. Skonfiguruj projekt w usługach gier Play
(Jeśli jeszcze nie zostało to zrobione) Postępuj zgodnie z instrukcjami w artykule Konfigurowanie Google Play. Usługi gier.
2. Konfigurowanie konta usługi dla gry
Wykonaj instrukcje dotyczące tworzenia usługi. . Na końcu powinien być plik JSON z danymi logowania konta usługi.
3. Pobierz bibliotekę Java po stronie serwera dla PlayGamesServices
Pobierz najnowsze google-api-services-games biblioteka i prześlij go na swój serwer.
4. Przygotowywanie danych logowania do wywołań interfejsu Recall API
Patrz sekcja Przygotowanie do utworzenia autoryzowanego interfejsu API zadzwoń .
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();
Konfiguracja klienta gry
Skonfiguruj klienta gry, aby pobierał identyfikatory sesji wycofywania używane przez serwer komunikacją z serwerami Google.
Pakiet SDK Java
Skonfiguruj w kliencie pakiet SDK Java.
pamiętaj, aby dodać com.google.android.gms:play-services-games-v2:19.0.0
i com.google.android.gms:play-services-tasks:18.0.2
lub więcej na
Gradle.
Aby komunikować się z serwerami Google przy użyciu prawidłowych informacji, musisz: zażądać z pakietu SDK klienta identyfikatora sesji wycofywania, który musisz wysłać do pakietu serwera.
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 });
Pakiet SDK Unity
Jeśli jeszcze nie zostało to zrobione, skonfiguruj pakiet Unity SDK w .
Aby komunikować się z serwerami Google przy użyciu prawidłowych informacji, musisz: zażądać identyfikatora sesji wycofywania z pakietu SDK klienta i wysłać go do pakietu serwera.
PlayGamesPlatform.Instance.RequestRecallAccess(
recallAccess => {
string recallSessionId = recallAccess.sessionId;
// Send the recallSessionId to your game server
});
Używanie interfejsu Recall API na serwerze gry
Po skonfigurowaniu serwera i klienta możesz wysłać recallSessionID
z klienta gry na serwer i postępuj zgodnie z poniższymi wskazówkami,
za pomocą interfejsu Java API do przechowywania, pobierania i usuwania tokenów wycofywania po stronie serwera.
Tokeny sklepu
Lista użytkowników Tokeny i profili użytkowników można przechowywać za pomocą LinkPersonaRequest
obiektu. Do wywoływania interfejsów API Google należy używać interfejsu GoogleCredential
(patrz Połączenia
Google
Interfejsy API
, aby uzyskać kontekst). Pamiętaj, że zgodnie z mocą 1:1
ograniczenie, możesz połączyć tylko 1 profil klienta
do 1 profilu usług gier Play naraz (i odwrotnie).Ustaw rozdzielczość
zasad w przypadku tego, że ten profil usług gier Play został już połączony z innym profilem.
Opcjonalnie możesz ustawić dla tokena wartość TTL, która określa, jak długo
token jest prawidłowy przy użyciu
Czasy trwania
obiektu. Możesz użyć parametru SetTtl()
(jak pokazano poniżej), który ustawia
datę wygaśnięcia po upływie czasu podanego w metodzie;
setExpireTime()
, która pozwala ustawić dokładny czas wygaśnięcia tokenów.
Musisz zaszyfrować profil i token gry. Nie mogą one zawierać osobistej informacjami umożliwiającymi identyfikację. Ciągi znaków dotyczące profilu klienta i tokenów mogą mieć maksymalnie 256 znaków, przy czym w każdej z nich można przechowywać maksymalnie 20 tokenów lub profili osób gracza na mecz.
W danym momencie każdy gracz może przechowywać tylko 1 token. Próbujemy przechowywać inny token o tym samym profilu, zastąpi pierwotny token.
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
}
Pobieranie tokenów
W zależności od konta są dostępne 3 sposoby uzyskania tokena do Twoich potrzeb. Dostępne opcje poproś o:
- Tokeny powiązane z bieżącą grą, w tym tokeny wycofywania ograniczone do gry.
- Ostatni token zapisany we wszystkich grach należących do konta dewelopera.
- Biorąc pod uwagę listę gier należących do konta dewelopera, wszystkie tokeny wycofywania powiązane z każdą grą.
Tokeny wycofywania w zakresie gry
Aby odzyskać tokeny wycofywania z bieżącej gry, pobierz
recallSessionId
z klienta i przekaż go do interfejsu 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
}
Ostatni token wycofywania we wszystkich grach należących do konta dewelopera
Aby pobrać najnowszy token zapisany we wszystkich grach należących do dewelopera
w Konsoli Google Play, musisz pobrać recallSessionId
z klienta i przekazać go do interfejsu lastTokenFromAllDeveloperGames
API zgodnie z
w poniższym fragmencie kodu. W odpowiedzi możesz sprawdzić,
identyfikator aplikacji powiązany
za pomocą tego tokena.
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.
}
wszystkie tokeny wycofywania w przypadku danej listy gier należących do konta dewelopera;
Aby pobrać wszystkie tokeny powiązane z listą gier należących do
swojego konta dewelopera w Konsoli Google Play, pobierz recallSessionId
z klienta i przekazać go do interfejsu API gamesPlayerTokens
. Podaj
listę identyfikatorów aplikacji.
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.
}
Usuń token wycofywania
W razie potrzeby możesz też usunąć token wycofywania z tym wywołaniem:
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();
Włącz tryb bezprofilowy
Możesz włączyć ograniczoną funkcjonalność interfejsu Recall API. dla użytkowników, którzy nie mają profili usług gier Play:
- Włącz wycofywanie bez profilu w projekcie gry w usługach gier Play na stronie Dewelopera w Google Play
Konsola.
- Zapoznaj się z dodatkowymi warunkami opisanymi w dalszej części tej sekcji.
- Dodaj do aplikacji następujący tag metadanych: plik manifestu:
<meta-data
android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
android:value="true" />
Warunki dodatkowe
Obowiązują Warunki korzystania z usług gier Play usługi, użytkownik akceptuje fakt, że jeśli używasz interfejsu Recall API w przypadku użytkowników bez profilu usług gier Play, co umożliwia udostępnianie danych użytkownika w Google, jeśli użytkownik nie ma profilu usług gier Play, Użytkownik musi, przed udostępnieniem takich danych Google, udostępnić użytkownikowi odpowiednie powiadomienie z opisem: 1) udostępnienie Google danych w celu umożliwienia Gry Play funkcji łączenia kont, 2) dostępności ustawień do zarządzania np. udostępniania, np. w ustawieniach Gier Play; oraz 3) przetwarzaniu tych danych zgodnie z Polityką prywatności Google i uzyskać odpowiednich użytkowników zgody na udostępnianie takich danych, która spełnia wszystkie obowiązujące wymagania prawne.