召回 API

召回 API 允许游戏通过将召回令牌存储在 Google 服务器上,来管理 PGS 用户与其游戏内帐户之间的链接。以下是一个关于如何使用召回 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. 用户现在决定首次在GPG on PC 上玩游戏。用户会自动使用其 PGS 帐户登录,游戏客户端会检查此 PGS 用户是否有任何可用的进度。然后,游戏服务器查询 Google 以查看此 PGS 帐户是否有任何令牌。由于有令牌,Google 会返回召回令牌,游戏服务器使用该令牌找到与用户关联的帐户 Racer94 并恢复其进度。由于使用 PGS 登录是一种无缝体验,因此应用程序会自动恢复用户进度,而无需用户输入用户名或密码。此外,开发者可以使用 PGS 登录与他们现有的身份系统,并依靠 Google 来存储玩家进度与其 PGS 帐户之间的链接。

    Game server restores progress with recall
token

如上例所示,召回 API 执行两个主要操作:在用户使用其中一个游戏内帐户登录时存储令牌到 Google,以及检索用户的令牌以恢复其游戏内帐户。

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

基数规则

召回 API 强制执行 PGS 个人资料与游戏内帐户之间的 1:1 关系(称为基数规则),其中一个角色只能链接到一个 PGS 个人资料,而一个 PGS 个人资料只能链接到一个角色。角色用作游戏内帐户的稳定标识符,因为召回令牌可能会随着时间的推移而改变。

链接到 PGS 个人资料的角色也可能会随着时间的推移而改变(因为不同的游戏内帐户链接到 PGS 个人资料)。

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

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

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

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

User signs in with PGS

假设用户已登录,请从游戏客户端上的游戏 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. 游戏 SDK 会触发自动登录,由于用户没有 PGS 个人资料,因此登录失败。
  3. 游戏 SDK 会显示一条通知栏,告知用户该游戏已与 Google 集成。此通知栏可操作 - 用户可以在创建个人资料之前禁用召回。
  4. 游戏请求召回访问权限。请注意,当设备上有 PGS 个人资料或设备上没有 Google 帐户时,PGS 会拒绝召回访问权限请求。在这种情况下,游戏应在不使用 PGS 的情况下继续进行。
  5. 用户使用游戏内帐户登录后,游戏会为与用户游戏内帐户相对应的用户创建一个令牌和角色对。游戏会将此对存储到 Google。如果用户登录其他游戏内帐户,游戏可能会稍后存储更多令牌。

在新的设备上启动游戏

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

后续步骤

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