无缝恢复

无缝恢复是一项 Google Play 游戏服务功能,旨在让回访玩家在新设备上安装游戏或重新安装游戏时,立即恢复到之前的游戏进度,从而有效消除登录界面带来的不便。

无缝恢复是 Level Up 计划的推荐指南。

使用 Google Play 游戏服务身份验证来简化游戏的用户平台身份验证体验。初始化 Play 游戏服务 SDK 以触发身份验证,这样就无需单独的平台身份验证流程。

关联用户账号以实现连续性和跨设备畅玩

有些玩家会在各种设备和平台上玩喜爱的游戏,包括手机、平板电脑和 PC。这类玩家的核心期望是,无论选择哪种设备,都能无缝衔接上次的进度继续游戏。

用户经常会因需要在每台新设备上单独登录而放弃使用。用户需要立即沉浸到游戏体验中,不受不必要的干扰。

为了实现无缝的连续性和跨设备畅玩,您必须实现两项关键功能:

Play 游戏服务身份验证流程为玩家标识符提供了灵活的选项。借助这些选项,您可以将 Play 游戏服务与您自己的现有身份验证解决方案集成。

新的 Play 游戏服务集成

对于尚未集成 Play 游戏服务的游戏,Recall API 可通过管理账号关联并存储用户游戏账号与 Play 游戏服务账号之间的关联,简化后端设置。

使用 Recall API 进行账号关联

对于跨平台游戏中的用户账号关联,建议使用 Recall API。此 API 特别适用于未集成 Play 游戏服务的游戏,或除了 Play 游戏服务之外还使用其他平台身份验证解决方案的游戏。

Recall API 通过管理账号关联来简化游戏的后端设置。

  • 简化的后端:该 API 可简化游戏后端设置,以便进行账号关联。
  • 由 Play 管理的关联:Play 会存储用户游戏账号(包括第三方账号)与 Play 游戏服务账号之间的关联。
  • 进度恢复:开发者生成 Recall 令牌并将其发送给 Play,然后可以检索该令牌来恢复用户的游戏进度。

在实现 Recall API 时,开发者必须验证 Recall 令牌是否是不透明的字符串。这些令牌不得包含任何与玩家相关的敏感信息或个人身份信息(例如姓名、电子邮件地址或人口统计信息)。

游戏在生成 Recall 令牌时必须使用强大的加密算法,以保护用户数据并维护安全性。

如需详细了解 Recall 的工作原理,请参阅 Recall API

如需实现 Recall API 功能,请参阅在游戏中集成 Play 游戏服务 Recall API

现有的 Play 游戏服务集成

本部分介绍了如何通过绑定玩家账号将游戏与 Play 游戏服务集成。了解如何使用玩家 ID 来识别经过身份验证的玩家,以及如何为单个 Play 游戏服务用户管理多个游戏账号。

Player_id 绑定

玩家 ID 是 Play 游戏服务玩家账号的标识符。您的游戏可以检索通过 Play 游戏服务完成身份验证并登录游戏的任何玩家的玩家 ID。

如果游戏已通过 Play 游戏服务 Player_Id 设置后端,或者游戏需要支持儿童用户,则应使用 Player_Id 并将游戏和第三方账号与 Player_Id 绑定。

了解玩家 ID 的行为方式:

  • 在游戏中保持一致:当用户在多个设备上玩同一款游戏时,玩家 ID 将保持一致。
  • 不同游戏之间不一致:当用户玩不同的游戏时,玩家 ID 不一定会保持一致。

如需了解详情,请参阅新一代玩家 ID

通过绑定功能管理每个用户的多个账号

如需将多个用户账号与单个 Play 游戏服务账号相关联,请在表中创建一对多映射。

使用 Google 账号登录实现跨平台 Google 身份

使用 Google 账号登录 (SiwG) 是 Google 的主要身份解决方案,可让游戏开发者安全地接收玩家的个人资料信息:姓名、电子邮件地址和个人资料照片。

使用 Google 账号登录的一项主要优势在于,它可在各种平台(包括 WebAndroidiOS)上广泛使用。它提供快速、安全且熟悉的登录体验,玩家已经了解并信任这种体验。

与 Google ID 令牌的 sub 字段绑定

为了打造顺畅的跨平台体验,您可以实现一种身份验证策略,将游戏的账号系统与唯一的 Google 账号标识符相关联。此方法利用了 Android 上简化的 Play 游戏服务身份验证,同时在 iOS 和 Web 等其他平台上使用标准的 Google 账号登录 SDK。

Google ID 令牌中的 sub 字段是 Google 用户账号的唯一且持久的标识符。对于同一用户,此 sub 字段在所有平台中都是相同的。在后端中使用此 sub 值作为唯一键,以绑定和恢复玩家在不同设备上的进度。此键会将玩家的所有会话关联到后端中的单个游戏账号。

以下是简要流程:

  • 在 Android 上:游戏会初始化 Play 游戏服务 SDK,以在 Android 设备上自动触发平台身份验证。当您在 Android 上使用 Google 账号登录时,请请求以下三个登录范围emailprofileopenid。不使用 Play 游戏服务 v2 集成。这些范围与标准 SiwG SDK 请求的范围相同。这样,您就可以检索包含玩家 sub 字段的 ID 令牌
  • 在 Web 和 iOS 上:游戏使用标准的 Sign in with Google for webGoogle Sign in for iOS and macOS SDK。当用户登录时,SiwG SDK 会提供一个 ID 令牌,其中还包含用户的 sub 字段。
  • 账号绑定:由于用户在两个平台上登录的是同一 Google 账号,因此您收到的 sub 字段将完全相同。然后,您可以放心地将此 sub 值绑定到身份解决方案中的内部用户 ID,从而打造统一的用户体验。

Android 集成

在 Android 上,初始化 Play 游戏服务 SDK 以在 Android 设备上自动触发平台身份验证。然后,当您在 Android 上使用 Google 账号登录时,请求三个登录范围emailprofileopenid。这样,您就可以检索服务器端授权代码,您的后端可以使用该代码换取包含用户信息的 ID 令牌,其中包括唯一的 sub 字段。

从宏观层面来看,实现过程包括:

  1. 在统一项目中设置客户端 ID:在集成之前,您必须在 Google Play 管理中心内设置 Play 游戏服务,以获取 OAuth 2.0 客户端 ID。

  2. 配置 Play 游戏服务:首先,在 Google Play 管理中心中添加游戏,并将 Play 游戏服务平台身份验证集成到您的游戏中。

  3. 添加“使用 Google 账号登录”按钮:在游戏的登录页面或用户设置界面上,添加使用 Google 账号登录按钮。此按钮将触发登录或注册流程。创建此按钮时,建议您遵循“使用 Google 账号登录”品牌推广指南。按钮至少应清楚显示“Google”或“使用 Google 账号登录”。该准则链接还提供了符合要求的可下载用户体验素材资源,您可以在游戏中使用这些素材资源。

  4. 使用登录范围请求服务器授权代码:当玩家点击按钮时,您的游戏会请求一次性服务器授权代码。最重要的一步是配置此请求,使其包含以下登录范围EMAILPROFILEOPEN_ID

    具体配置方式取决于您的开发环境:

  5. 在后端交换授权代码并验证 ID 令牌:将上一步中的授权代码发送到您的后端服务器。在服务器上,按照标准的 OAuth 2.0 代码交换流程指南将代码换成 ID 令牌、访问令牌和刷新令牌。如该指南中所述,您必须在服务器上验证 ID 令牌。

  6. 绑定 sub 字段:成功验证 ID 令牌后,从其载荷中提取 sub 字段。使用此 sub 值作为身份解决方案中 Google 身份的唯一键。

    • 如果您的数据库中已存在此 sub 值,则表示用户之前已关联过。让孩子登录其相应的游戏账号。

    • 如果不存在此 sub,您可以在游戏账号系统中创建一个与此 sub 关联的新用户账号,也可以通过匹配 ID 令牌中提供的用户信息(例如电子邮件地址)来关联账号系统中的现有用户账号。

在 iOS、Web 和其他平台中集成

在 Android、iOS、Web 或 PC 以外的平台上,您将使用标准的“使用 Google 账号登录”SDK。此流程的目标与 Android 流程相同:安全地获取 Google ID 令牌,将其发送到后端,并使用 sub 字段关联账号。

从宏观层面来看,实现过程包括:

  1. 客户端集成:按照官方文档集成适用于您平台的“使用 Google 账号登录”SDK。这些指南涵盖了完整的客户端流程,从呈现“使用 Google 账号登录”按钮到检索 ID 令牌。

  2. 后端逻辑:将 ID 令牌(或授权代码)发送到您的后端。然后,您的服务器会执行与“在 Android 上集成”部分第 4 步和第 5 步中描述的完全相同的验证和 sub 字段绑定逻辑。

由于所有这些“使用 Google 账号登录”流程中的 sub 字段与从 Android 上的 Google Play 游戏服务流程中检索到的字段(针对同一 Google 账号)相同,因此该流程成功地将用户账号关联到所有平台。