无缝恢复是一项 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 账号登录的一项主要优势在于,它可在各种平台(包括 Web、Android 和 iOS)上广泛使用。它提供快速、安全且熟悉的登录体验,玩家已经了解并信任这种体验。
与 Google ID 令牌的 sub 字段绑定
为了打造顺畅的跨平台体验,您可以实现一种身份验证策略,将游戏的账号系统与唯一的 Google 账号标识符相关联。此方法利用了 Android 上简化的 Play 游戏服务身份验证,同时在 iOS 和 Web 等其他平台上使用标准的 Google 账号登录 SDK。
Google ID 令牌中的 sub 字段是 Google 用户账号的唯一且持久的标识符。对于同一用户,此 sub 字段在所有平台中都是相同的。在后端中使用此 sub 值作为唯一键,以绑定和恢复玩家在不同设备上的进度。此键会将玩家的所有会话关联到后端中的单个游戏账号。
以下是简要流程:
- 在 Android 上:游戏会初始化 Play 游戏服务 SDK,以在 Android 设备上自动触发平台身份验证。当您在 Android 上使用 Google 账号登录时,请请求以下三个登录范围:
email、profile和openid。不使用 Play 游戏服务 v2 集成。这些范围与标准 SiwG SDK 请求的范围相同。这样,您就可以检索包含玩家sub字段的 ID 令牌。 - 在 Web 和 iOS 上:游戏使用标准的 Sign in with Google for web、Google Sign in for iOS and macOS SDK。当用户登录时,SiwG SDK 会提供一个 ID 令牌,其中还包含用户的
sub字段。 - 账号绑定:由于用户在两个平台上登录的是同一 Google 账号,因此您收到的
sub字段将完全相同。然后,您可以放心地将此sub值绑定到身份解决方案中的内部用户 ID,从而打造统一的用户体验。
Android 集成
在 Android 上,初始化 Play 游戏服务 SDK 以在 Android 设备上自动触发平台身份验证。然后,当您在 Android 上使用 Google 账号登录时,请求三个登录范围:email、profile 和 openid。这样,您就可以检索服务器端授权代码,您的后端可以使用该代码换取包含用户信息的 ID 令牌,其中包括唯一的 sub 字段。
从宏观层面来看,实现过程包括:
在统一项目中设置客户端 ID:在集成之前,您必须在 Google Play 管理中心内设置 Play 游戏服务,以获取 OAuth 2.0 客户端 ID。
配置 Play 游戏服务:首先,在 Google Play 管理中心中添加游戏,并将 Play 游戏服务平台身份验证集成到您的游戏中。
添加“使用 Google 账号登录”按钮:在游戏的登录页面或用户设置界面上,添加使用 Google 账号登录按钮。此按钮将触发登录或注册流程。创建此按钮时,建议您遵循“使用 Google 账号登录”品牌推广指南。按钮至少应清楚显示“Google”或“使用 Google 账号登录”。该准则链接还提供了符合要求的可下载用户体验素材资源,您可以在游戏中使用这些素材资源。
使用登录范围请求服务器授权代码:当玩家点击按钮时,您的游戏会请求一次性服务器授权代码。最重要的一步是配置此请求,使其包含以下登录范围:
EMAIL、PROFILE和OPEN_ID。具体配置方式取决于您的开发环境:
对于 Java/Kotlin:请参阅有关使用
requestServerSideAccess获取服务器授权代码的指南。对于 Unity:请参阅在 Unity 中检索授权代码指南。
在后端交换授权代码并验证 ID 令牌:将上一步中的授权代码发送到您的后端服务器。在服务器上,按照标准的 OAuth 2.0 代码交换流程指南将代码换成 ID 令牌、访问令牌和刷新令牌。如该指南中所述,您必须在服务器上验证 ID 令牌。
绑定
sub字段:成功验证 ID 令牌后,从其载荷中提取sub字段。使用此sub值作为身份解决方案中 Google 身份的唯一键。如果您的数据库中已存在此
sub值,则表示用户之前已关联过。让孩子登录其相应的游戏账号。如果不存在此
sub值,您可以在游戏账号系统中创建一个与此sub关联的新用户账号,也可以通过匹配 ID 令牌中提供的用户信息(例如电子邮件地址)来关联账号系统中的现有用户账号。
在 iOS、Web 和其他平台中集成
在 Android、iOS、Web 或 PC 以外的平台上,您将使用标准的“使用 Google 账号登录”SDK。此流程的目标与 Android 流程相同:安全地获取 Google ID 令牌,将其发送到后端,并使用 sub 字段关联账号。
从宏观层面来看,实现过程包括:
客户端集成:按照官方文档集成适用于您平台的“使用 Google 账号登录”SDK。这些指南涵盖了完整的客户端流程,从呈现“使用 Google 账号登录”按钮到检索 ID 令牌。
对于 Web: 使用 Google 账号登录(适用于 Web)
对于 iOS: 适用于 iOS 和 macOS 的 Google 登录
对于没有专用 SDK 的平台(例如自定义游戏引擎或 PC build),您可以手动实现 OAuth 2.0 网络服务器流程,以获取必要的令牌。
后端逻辑:将 ID 令牌(或授权代码)发送到您的后端。然后,您的服务器会执行与“在 Android 上集成”部分第 4 步和第 5 步中描述的完全相同的验证和
sub字段绑定逻辑。
由于所有这些“使用 Google 账号登录”流程中的 sub 字段与从 Android 上的 Google Play 游戏服务流程中检索到的字段(针对同一 Google 账号)相同,因此该流程成功地将用户账号关联到所有平台。