Вызов API

API отзыва позволяет играм управлять связями между пользователями игровых сервисов Google Play (PGS) и их внутриигровыми учетными записями, сохраняя токены отзыва на серверах Google. Вот пример сценария использования Recall API.

  1. Пользователь играет в игру, в которой разработчик имеет систему идентификации для отслеживания прогресса пользователя и использует PGS параллельно с другими методами аутентификации для входа пользователей в свою игру. В этом примере пользователь входит в свою учетную запись PGS Laura и создает внутриигровую учетную запись с системой идентификации разработчика под названием Racer94 . Пока пользователь играет в игру, игровой сервер разработчика синхронизирует его прогресс.

    Пользователь вошел в систему с помощью PGS и внутриигровой учетной записи.

  2. Отдельно разработчик сохраняет в Google токен отзыва, который соответствует внутриигровому аккаунту пользователя. Google автоматически сохраняет этот токен отзыва в профиле PGS пользователя.

    Игровой сервер хранит токен отзыва на серверах Google

  3. Теперь пользователь решает впервые сыграть в игру на GPG на ПК . Пользователь автоматически входит в свою учетную запись PGS, и игровой клиент проверяет, доступен ли какой-либо прогресс для этого пользователя PGS. Затем игровой сервер запрашивает у Google, есть ли токены для этой учетной записи PGS. Поскольку они есть, Google отправляет обратно токен отзыва, и игровой сервер использует этот токен, чтобы найти связанную учетную запись пользователя Racer94 и восстановить его прогресс. Поскольку вход в систему с помощью PGS не вызывает затруднений, прогресс пользователя восстанавливается приложением без необходимости ввода имени пользователя или пароля. Кроме того, разработчик может использовать вход в PGS со своей существующей системой идентификации и полагаться на Google, чтобы сохранить связь между прогрессом игрока и его учетной записью PGS.

    Игровой сервер восстанавливает прогресс с помощью токена отзыва

Как видно из примера ранее, API восстановления выполняет два основных действия:

  • Сохранение токена в Google, когда пользователь входит в систему под одной из игровых учетных записей.

  • Получение токена для пользователя для восстановления его внутриигровых учетных записей.

Помимо токенов отзыва, API отзыва также требует стабильный идентификатор, соответствующий внутриигровой учетной записи, известный как persona , для обеспечения соблюдения ограничений по количеству элементов . Вы можете думать о персоне как о метке, которая представляет внутриигровую учетную запись пользователя в системе идентификации разработчика, а о токене отзыва как о ключе, который используется для восстановления внутриигровой учетной записи пользователя в игре. Значения персон и токенов не должны повторно использоваться в разных проектах PGS . Кроме того, хотя жетоны отзыва могут меняться со временем, персонаж должен быть стабильным в соответствии с внутриигровой учетной записью пользователя.

Правила мощности

API отзыва обеспечивает связь 1:1 между профилями PGS и внутриигровыми учетными записями (называемыми правилами кардинальности ), где один персонаж может быть связан только с одним профилем PGS, а один профиль PGS может быть связан только с одним человеком. Персона используется как стабильный идентификатор внутриигровой учетной записи, поскольку жетоны отзыва могут со временем меняться.

Персонаж, связанный с профилем PGS, также может со временем меняться (поскольку с профилем PGS связаны разные игровые учетные записи).

Технические потоки хранения и получения токенов отзыва

В этом разделе описывается технический процесс между игровым клиентом и серверами с серверами Google при хранении и получении токенов отзыва.

Шаг 1. Войдите в систему пользователя PGS и получите идентификатор сеанса.

Игра инициализирует PGS SDK и пытается войти в систему с помощью PGS.

Пользователь входит в систему с помощью PGS

Предполагая, что пользователь вошел в систему, запросите идентификатор сеанса из Games SDK в игровом клиенте и запросите токен OAuth 2.0 из серверной части OAuth Google. Идентификатор сеанса и токены OAuth 2.0 используются для связи с серверной частью Google Games.

Разработчик запрашивает идентификатор сеанса

Шаг 2. Получите любой доступный токен отзыва.

Запрос любого токена отзыва, связанного с учетной записью пользователя PGS. Если токен присутствует, перейдите к шагу 3а и восстановите прогресс . В противном случае, если это новый пользователь и у него нет токена, перейдите к шагу 3b и сохраните новый токен .

Разработчик получает токен отзыва

Шаг 3а. Если токен присутствует, восстановите прогресс.

Если токен присутствует, извлеките и расшифруйте его, а также восстановите пользовательские данные.

Разработчик восстанавливает данные из токена отзыва

Шаг 3б. Если токена нет, сохраните токен.

Поскольку жетона нет, прогресс не восстанавливается. Пользователь приступает к входу в систему с помощью системы идентификации разработчика или создает новую учетную запись, если она не существует. Обратите внимание: это не вход в систему с помощью PGS (что уже было сделано), а с помощью системы идентификации разработчика за пределами PGS.

Пользователь входит в свою учетную запись в игре.

Создайте зашифрованный токен отзыва, который закодирует внутриигровую учетную запись пользователя, и отправьте его в Google вместе с идентификатором сеанса и токеном OAuth 2.0. На этом этапе Google создает связь между отправленным токеном отзыва и учетной записью PGS игрока.

Разработчик хранит токен отзыва

Потоки для пользователей без профиля PGS

Вы можете сохранить токены отзыва для пользователя, который еще не создал профиль PGS, используя беспрофильный режим. Однако есть два важных предостережения:

  • Вы не можете получить токены для пользователя, у которого нет профиля PGS. Создание профиля автоматически запрашивается, когда пользователь пытается войти в вашу игру с помощью игровых сервисов Play на втором устройстве.
  • Вы должны следовать дополнительным рекомендациям , чтобы обеспечить наличие соответствующего уведомления с описанием следующих элементов и получение соответствующего согласия конечного пользователя:
    • Вы передаете данные Google для включения функции привязки учетной записи Play Games.
    • Наличие настроек для управления этим общим доступом, таких как настройки Play Игр.
    • Обработка таких данных осуществляется в соответствии с Политикой конфиденциальности Google .

Храните пару токенов и персон.

Пользователь без профиля PGS открывает игру

  1. Пользователь без профиля PGS открывает игру, в которой включен беспрофильный вызов.
  2. Games SDK запускает автоматический вход, который завершается неудачей, поскольку у пользователя нет профиля PGS.
  3. В Games SDK отображается снэк-бар, который информирует пользователя о том, что игра интегрирована с Google. Эта снэк-бар доступна для действий — пользователь может отключить вызов до тех пор, пока не будет создан профиль.
  4. Игра запрашивает доступ к отзыву. Обратите внимание, что PGS отклоняет запросы на доступ к отзыву, если на устройстве есть профили PGS или если на устройстве нет учетных записей Google. В этом случае игра должна продолжиться без использования PGS.
  5. После того, как пользователь входит в систему под игровой учетной записью, игра создает для пользователя пару токенов и персон, соответствующую его внутриигровой учетной записи. Игра хранит эту пару в Google. Игра может сохранить больше жетонов позже, если пользователь войдет в другие игровые учетные записи.

Запустите игру на новом устройстве

  1. Пользователь без профиля PGS открывает игру, в которой на устройстве включен беспрофильный вызов.
  2. Игра записывает токен беспрофильного отзыва, как описано в разделе «Сохранение пары жетона и персоны» .
  3. Пользователь открывает ту же игру на другом устройстве с той же учетной записью.
  4. Games SDK запускает создание профиля. Пользователь может просмотреть и отклонить ранее сохраненные токены отзыва. В это время пользователь создает профиль PGS.
  5. Автоматический вход в PGS завершается, и игра получает статус аутентифицированной.
  6. Игра получает жетоны отзыва для пользователя как обычно.

Следующие шаги

Чтобы интегрировать Recall API с вашим клиентом и игровым сервером, следуйте этому руководству .