Na tej stronie dowiesz się, jak wdrożyć w grze interfejs Recall API. Pierwszy to m.in. skonfigurować serwer gry i klienta pod kątem obsługi interfejsu API, jak przechowywać i pobierać tokeny.
Konfiguracja serwera gry
Skonfiguruj serwer gry, aby wywoływać interfejs Recall API na serwery Google.
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.
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.
Pobierz bibliotekę Java po stronie serwera dla usług gier Play
Pobierz najnowszą wersję google-api-services-games
biblioteka
i prześlij go na swój serwer.
Przygotowywanie danych logowania do wywołań interfejsu Recall API
Zobacz Przygotowywanie interfejsu API delegowanego 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.
oraz pamiętaj o podaniu
com.google.android.gms:play-services-games-v2:19.0.0
i
com.google.android.gms:play-services-tasks:18.0.2
lub wyższy poziom w Gradle
.
Aby przekazać poprawne informacje z serwerami Google, poproś o Wywołaj identyfikator sesji z pakietu SDK klienta, który wysyłasz na serwer gry:
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 });
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
Przechowuj profil użytkownika i token gry za pomocą obiektu LinkPersonaRequest
.
Użyj aplikacji GoogleCredential
, by dzwonić do Google
Interfejsy API.
Zgodnie z mocą 1:1
,
łączyć tylko 1 profil użytkownika z 1 profilem usług gier Play naraz i odwrotnie. Ustaw parametr
zasady rozwiązania problemu w przypadku, gdy ten profil usług gier Play został już połączony z innym
profil.
Opcjonalnie możesz ustawić dla tokena wartość TTL, która określa, jak długo
token jest prawidłowy przy użyciu
Durations
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. Jeśli spróbujesz aby zapisać inny token o tym samym profilu, system zastąpi oryginalny 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
}
Pobieranie tokenów
Aby pobrać token wycofywania, poproś klienta o żądanie recallSessionId
oraz
przekazać go do interfejsu 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
}
Usuń token wycofywania
W razie potrzeby możesz też usunąć token wycofywania z tym wywołaniem:
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();
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" />
Dodatkowe warunki
Obowiązują Warunki korzystania z usług gier Play Service, wyrażasz zgodę na to, że jeśli używasz interfejsu Recall API do 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.