Recall API

借助 Recall API,游戏可以将 Play 游戏服务 (PGS) 作为现有登录机制(例如 Google 登录)的配套应用,并可以在其设备之间无缝同步玩家的登录信息,以减少新用户流失率并提高 1 天留存率。该 API 通过将 Recall 令牌存储在 Google 服务器中,管理用户的 Play 游戏服务 (PGS) 帐号与其游戏内帐号之间的关联。下面是一个说明可以如何使用 Recall API 的示例场景:

  1. 用户正在玩一款游戏,其开发者可以通过身份系统跟踪用户进度,并同时使用 PGS 和其他身份验证方法让用户登录其游戏。在此示例中,用户登录了其 PGS 账号 Laura,然后使用开发者的身份系统(名为 Racer94)创建了一个游戏内账号。当用户玩游戏时,开发者的游戏服务器会同步其进度。

    用户使用 PGS 和游戏内账号登录

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

    游戏服务器将 Recall 令牌存储在 Google 服务器中

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

    游戏服务器使用 Recall 令牌恢复进度

如上例所示,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 登录。

用户使用 PGS 登录

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

开发者请求会话 ID

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

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

开发者检索 Recall 令牌

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

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

开发者从 Recall 令牌恢复数据

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

由于不存在令牌,因此不会恢复任何进度。用户继续使用开发者的身份系统登录,或创建新帐号(如果不存在此类帐号)。

用户使用其游戏内账号登录

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

开发者存储 Recall 令牌

后续步骤

如需将 Recall API 与您的客户端和游戏服务器集成,请按照此实现指南操作。