借助 Recall API,您可以将 Google Play 游戏服务用户与其游戏内 账号无缝关联,从而实现自动恢复进度。您可以在游戏服务器中存储 Recall 令牌 ,并将这些令牌与用户的 Google Play 游戏服务 玩家资料相关联。使用 Recall API 是可选操作,如果您没有自己的 强大身份后端,建议您使用此方法来实现 无缝恢复。
术语
本文档使用以下术语:
Recall 令牌:存储在游戏服务器上的安全密钥,充当 玩家的 Play 游戏服务账号与其 游戏内账号之间的关联。
会话 ID:由 Play 游戏服务 SDK 在玩家的设备上生成的临时唯一标识符。它表示 后端服务器发出的请求源自玩家设备上的合法有效 游戏会话。
示例场景
以下是说明可以如何使用 Recall API 的示例场景:
用户正在玩一款游戏,其开发者可以通过身份系统跟踪 用户进度,并同时使用 PGS 和其他身份验证方法让 用户登录其游戏。在此示例中,用户登录了其 PGS 账号 Laura,然后使用开发者的身份系统(名为 Racer94)创建了一个游戏内账号。当用户玩游戏时,开发者的游戏服务器会同步其进度。

此外,开发者还在 Google 上保存一个 Recall 令牌,该令牌与用户的游戏内账号相对应。Google 会根据用户的 PGS 玩家资料自动存储该 Recall 令牌。

现在,用户第一次决定在 Google Play 游戏电脑版 平台上玩游戏。系统会自动使用用户的 PGS 账号进行身份验证,而游戏客户端会检查是否有可为该 PGS 用户恢复的进度。然后,游戏服务器会 向 Google 查询,以确认是否有可供此 PGS 账号使用的令牌。由于存在,Google 会发回 Recall 令牌,游戏服务器使用该 令牌查找用户的关联账号 Racer94,并恢复其 游戏进度。由于使用 PGS 进行身份验证是一次顺畅无碍的体验,因此无需用户输入 用户名或密码,应用即会恢复 用户的进度。此外,开发者可将 PGS 身份验证机制与自己现有的身份系统搭配使用,并依赖于 Google 来存储玩家进度与其 PGS 账号之间的关联。

如前面的示例所示,Recall API 主要执行以下两项操作:
当用户使用其中一个游戏内 账号登录时,将 令牌存储 在 Google 中。
检索 用户的令牌,以便恢复其游戏内 账号。
除 Recall 令牌外,Recall API 还需要与游戏内账号对应的稳定标识符 (称为角色)。您可以将 角色视为在 开发者身份系统中代表用户的游戏内账号的标签,而将 Recall 令牌视为用于将用户的游戏内账号恢复至游戏的密钥。角色和令牌值不得在不同 PGS 项目中重复使用。此外,虽然 Recall 令牌可能会 随时间而变化,但角色应根据用户的游戏内 账号保持稳定。
用于存储和检索 Recall 令牌的技术流程
本部分介绍了在使用 Google 服务器存储和检索 Recall 令牌时游戏客户端与服务器之间的技术流程。
第 1 步:对 PGS 用户进行身份验证并检索会话 ID
游戏会初始化 PGS SDK 并尝试让用户使用 PGS 进行身份验证。

假设用户已通过身份验证,在游戏客户端上从游戏 SDK 请求会话 ID,并从 Google 的 OAuth 后端请求 OAuth 2.0 令牌。会话 ID 和 OAuth 2.0 令牌用于与 Google 游戏后端进行通信。

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

第 3a 步:如果存在令牌,则恢复进度
如果存在令牌,则检索并解密令牌,然后恢复用户数据。

第 3b 步:如果不存在令牌,则存储令牌
由于不存在令牌,因此不会恢复任何进度。用户继续使用开发者的身份系统进行平台身份验证 ,或创建新账号(如果不存在此类账号 )。注意:这不是使用 PGS 进行身份验证(该过程已完成),而是 使用 PGS 之外的开发者身份系统进行身份验证。

创建一个加密的 Recall 令牌(该令牌会对用户的游戏内账号进行编码),并 将该令牌连同会话 ID 和 OAuth 2.0 令牌一起发送给 Google。此时,Google 会在发送的 Recall 令牌与玩家的 PGS 账号之间建立关联。

没有 PGS 玩家资料的用户的流程
您可以使用无玩家资料模式为尚未创建 PGS 玩家资料的用户存储 Recall 令牌,方法是 使用无玩家资料模式。不过,请注意以下两点重要事项:
- 您无法为没有 PGS 玩家资料的用户检索令牌。当用户尝试在另一部设备上使用 Play 游戏服务登录您的游戏时,系统会自动提示用户创建玩家资料。
- 您必须遵循其他准则
以确保您提供适当的通知来描述以下各项内容并
获得适当的最终用户同意:
- 您与 Google 共享数据以启用 Play 游戏账号 关联功能。
- 用于管理此共享的设置(例如 Play 游戏 设置)的可用性。
- 根据《Google Privacy Policy》处理此类数据。
存储令牌和角色对

- 没有 PGS 玩家资料的用户打开已启用无玩家资料 Recall 的游戏。
- 游戏 SDK 会触发自动平台身份验证,但由于用户没有 PGS 玩家资料,因此身份验证失败 。
- 游戏 SDK 会显示一个 snackbar,告知用户游戏已与 Google 集成。此 snackbar 是可操作的,用户可以停用 Recall,直到创建玩家资料。
- 游戏请求 Recall 访问权限。请注意,当设备上有 PGS 玩家资料或设备上没有 Google 账号时,PGS 会拒绝 Recall 访问权限请求 。在这种情况下,游戏应在不使用 PGS 的情况下继续运行。
- 用户使用游戏内账号登录后,游戏会为用户创建与其游戏内账号对应的令牌和 角色对。游戏会将此对存储在 Google 中。如果 用户登录其他游戏内账号,游戏稍后可能会存储更多令牌。
在新设备上启动游戏
- 没有 PGS 玩家资料的用户在设备上打开已启用无玩家资料 Recall 的游戏 在设备上。
- 游戏会记录无玩家资料 Recall 令牌,如存储令牌 和角色对中所述。
- 用户在设置了相同账号的其他设备上打开同一款游戏 。
- 游戏 SDK 会触发玩家资料创建。用户可以查看并拒绝 之前存储的 Recall 令牌。用户此时会创建 PGS 玩家资料。
- 自动平台身份验证到 PGS 完成,游戏 会收到已通过身份验证的状态。
- 游戏会照常检索用户的 Recall 令牌。
后续步骤
如需将 Recall API 与您的客户端和游戏服务器集成,请遵循本指南。