借助 Recall API,游戏可以将 Recall 令牌存储在 Google 服务器中,从而管理 Google Play 游戏服务 (PGS) 用户与其游戏内账号之间的关联。下面是一个说明可以如何使用 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 API 在 PGS 玩家资料与游戏内账号之间强制建立 1 对 1 的关系(称为基数规则),其中一个角色只能与一份 PGS 玩家资料相关联,而一份 PGS 玩家资料只能与一个角色相关联。由于 Recall 令牌可能会随时间而变化,因此角色会用作游戏内账号的稳定标识符。
与 PGS 玩家资料关联的角色也可能会随时间而变化(因为不同的游戏内账号与 PGS 玩家资料相关联)。
用于存储和检索 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 隐私权政策》处理此类数据。
存储令牌和角色对
- 没有 PGS 玩家资料的用户打开启用了无玩家资料 Recall 的游戏。
- Games SDK 会触发自动登录,但由于用户没有 PGS 玩家资料,因此登录失败。
- Games SDK 会显示一个信息条,告知用户游戏已与 Google 集成。此动作条可供执行操作,用户可以在创建个人资料之前停用 Recall。
- 游戏请求 Recall 访问权限。请注意,当设备上有 PGS 玩家资料或没有 Google 账号时,PGS 会拒绝找回访问权限请求。在这种情况下,游戏应在不使用 PGS 的情况下继续运行。
- 用户使用游戏内账号登录后,游戏会为用户创建与其游戏内账号对应的令牌和角色对。游戏会将此对向 Google 存储。如果用户登录其他游戏内账号,游戏日后可能会存储更多令牌。
在新设备上启动游戏
- 没有 PGS 玩家资料的用户在设备上打开启用了无玩家资料找回功能的游戏。
- 游戏会记录无玩家资料的 Recall 令牌,如存储令牌和角色对中所述。
- 用户在具有相同账号设置的其他设备上打开同一游戏。
- Games SDK 会触发个人资料创建。用户可以查看和拒绝之前存储的 Recall 令牌。用户此时会创建 PGS 玩家资料。
- 自动登录 PGS 会完成,游戏会收到已通过身份验证的状态。
- 游戏会照常为用户检索 Recall 令牌。
后续步骤
如需将 Recall API 与您的客户端和游戏服务器集成,请遵循本指南。