Zintegruj interfejs PGS Recall API ze swoją grą

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:

  1. Włącz wycofywanie bez profilu w projekcie gry w usługach gier Play na stronie Dewelopera w Google Play Konsola. Wybierz opcję oznaczoną etykietą
  2. Zapoznaj się z dodatkowymi warunkami opisanymi w dalszej części tej sekcji.
  3. 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.