Recall API

Recall API 允许游戏通过将召回令牌存储到 Google 服务器来管理 Google Play 游戏服务 (PGS) 用户及其游戏内账号之间的链接。以下是 Recall API 的一个使用场景示例。

  1. 某个用户正在玩一款游戏,开发商拥有一个身份系统来跟踪用户进度,并使用 PGS 以及其他身份验证方法将用户登录到游戏中。在此示例中,某个用户已登录其 PGS 账号 Laura,并使用开发商身份系统创建了一个名为 Racer94 的游戏内账号。当用户玩游戏时,开发商的游戏服务器会同步其进度。

    User is logged in with PGS and an in-game
account

  2. 另外,开发商将一个召回令牌保存到 Google,该令牌与用户的游戏内账号对应。Google 会自动将该召回令牌存储到用户的 PGS 个人资料中。

    Game server stores recall token with Google
servers

  3. 该用户现在决定首次在 PC 上的 Google Play 游戏上玩游戏。该用户会自动登录其 PGS 账号,游戏客户端会检查此 PGS 用户是否有任何可用进度。然后,游戏服务器会查询 Google 以查看此 PGS 账号是否有任何令牌。如果有,Google 会发回召回令牌,游戏服务器会使用该令牌查找用户关联的账号 Racer94,并恢复其进度。由于通过 PGS 登录是一种无摩擦的体验,因此应用会在用户无需输入用户名或密码的情况下恢复用户的进度。此外,开发商可以将 PGS 登录与他们现有的身份系统结合使用,并依靠 Google 存储玩家进度和其 PGS 账号之间的链接。

    Game server restores progress with recall
token

如前所述,Recall API 主要执行两项操作

  • 用户使用其中一个游戏内账号登录时,将令牌存储到 Google。

  • 为用户检索令牌以恢复其游戏内账号。

除了召回令牌之外,Recall API 还需要一个与游戏内账号对应的稳定标识符(称为角色),以强制执行基数限制。您可以将角色视为代表用户在开发者身份系统中的游戏内账号的标签,将召回令牌视为用于将用户的游戏内账号恢复到游戏中的密钥。角色和令牌值不得在不同的PGS 项目之间重复使用。此外,虽然召回令牌可能会随时间而变化,但角色应根据用户的游戏内账号保持稳定。

基数规则

Recall API 会强制执行 PGS 个人资料和游戏内账号之间的一对一关系(称为基数规则),其中一个角色只能链接到一个 PGS 个人资料,一个 PGS 个人资料也只能链接到一个角色。角色用作游戏内账号的稳定标识符,因为召回令牌可能会随时间而变化。

链接到 PGS 个人资料的角色也可能会随时间而变化(随着不同的游戏内账号链接到 PGS 个人资料)。

存储和检索召回令牌的技术流程

本部分介绍了在存储和检索召回令牌时,游戏客户端和服务器与 Google 服务器之间的技术流程。

第 1 步:登录 PGS 用户并检索会话 ID

游戏初始化 PGS SDK 并尝试使用 PGS 登录用户。

User signs in with PGS

假设用户已登录,从游戏客户端的 Games SDK 请求会话 ID,并从 Google 的 OAuth 后端请求 OAuth 2.0 令牌。会话 ID 和 OAuth 2.0 令牌用于与 Google 游戏后端通信。

Developer requests a session
ID

第 2 步:检索任何可用的召回令牌

请求与 PGS 用户账号关联的任何召回令牌。如果令牌存在,请继续执行第 3a 步并恢复进度。否则,如果这是新用户且没有令牌存在,请继续执行第 3b 步并存储新令牌

Developer retrieves recall
token

第 3a 步:如果令牌存在,恢复进度

如果令牌存在,则检索并解密令牌,然后恢复用户数据。

Developer restores data from recall
token

第 3b 步:如果令牌不存在,存储令牌

由于没有令牌,因此不会恢复任何进度。用户继续使用开发商的身份系统登录,如果账号不存在,则创建一个新账号。请注意,这并不是使用 PGS 登录(这已经完成),而是使用 PGS 之外的开发商身份系统登录。

User signs in with their in-game
account

创建一个加密的召回令牌,其中包含用户的游戏内账号,并将其连同会话 ID 和 OAuth 2.0 令牌一起发送给 Google。此时,Google 会在已发送的召回令牌与玩家的 PGS 账号之间建立关联。

Developer stores recall token

没有 PGS 个人资料的用户的流程

您可以通过使用无个人资料模式来为尚未创建 PGS 个人资料的用户存储召回令牌。但是,有两个重要的注意事项:

  • 您无法为没有 PGS 个人资料的用户检索令牌。当用户尝试在第二台设备上使用 Play 游戏服务登录您的游戏时,系统会自动提示创建个人资料。
  • 您必须遵循其他指南,以确保您提供适当的通知,说明以下各项并获得相应的最终用户同意:
    • 您与 Google 共享数据以启用 Play 游戏账号关联功能。
    • 用于管理此共享的设置(例如 Play 游戏设置)的可用性。
    • 根据Google 隐私权政策对此类数据进行处理。

存储令牌和角色对

User without PGS profile opens a game

  1. 没有 PGS 个人资料的用户打开了已启用无个人资料召回的游戏。
  2. Games SDK 会触发自动登录,但由于用户没有 PGS 个人资料,因此登录失败。
  3. Games SDK 会显示一个信息提示条,告知用户游戏已与 Google 集成。此信息提示条是可操作的,用户可以在创建个人资料之前停用召回功能。
  4. 游戏会请求召回访问权限。请注意,当设备上存在 PGS 个人资料或设备上不存在 Google 账号时,PGS 会拒绝召回访问请求。在这种情况下,游戏应在不使用 PGS 的情况下继续进行。
  5. 用户使用游戏内账号登录后,游戏会为用户创建与他们的游戏内账号对应的令牌和角色对。游戏会将这对信息存储到 Google。如果用户登录其他游戏内账号,游戏稍后可能会存储更多令牌。

在新设备上启动游戏

  1. 没有 PGS 个人资料的用户在设备上打开了已启用无个人资料召回的游戏。
  2. 游戏会记录一个无个人资料召回令牌,如存储令牌和角色对中所述。
  3. 用户在具有相同账号设置的不同设备上打开同一款游戏。
  4. Games SDK 会触发个人资料创建。用户可以查看和拒绝之前存储的召回令牌。用户此时会创建一个 PGS 个人资料。
  5. 自动登录 PGS 完成,游戏收到已通过身份验证的状态。
  6. 游戏会像往常一样为用户检索召回令牌。

后续步骤

为了将 Recall API 与您的客户端和游戏服务器集成,请遵循本指南