使用 Google Play 游戏服务身份验证来简化游戏的用户平台身份验证体验。初始化 Play 游戏服务 SDK 以触发身份验证,这样就无需单独进行平台身份验证。
关联用户账号以实现连续性和跨设备畅玩
有些玩家会在各种设备和平台上玩喜爱的游戏,包括手机、平板电脑和 PC。这类玩家的核心期望是,无论选择哪种设备,都能无缝衔接上次的进度继续游戏。
用户经常会因需要在每台新设备上单独登录而放弃使用。用户需要立即沉浸到游戏体验中,不受不必要的干扰。
为了实现无缝的连续性和跨设备畅玩,您必须实现两项关键功能:
- 账号关联
- 云端保存
Play 游戏服务身份验证流程为玩家标识符提供了灵活的选项。借助这些选项,您可以将 Play 游戏服务与您自己的现有身份验证解决方案集成。
新的 Play Games 服务集成
对于尚未集成 Play Games 服务的游戏,Recall API 可通过管理账号关联并存储用户游戏账号与 Play Games 服务账号之间的关联,简化后端设置。
使用 Recall API 进行账号关联
对于跨平台游戏中的用户账号关联,建议使用 Recall API。此 API 特别适用于未集成 Play Games 服务的游戏,或除了 Play Games 服务之外还使用其他平台身份验证解决方案的游戏。
Recall API 通过管理账号关联来简化游戏的后端设置。
- 简化的后端:该 API 可简化游戏后端设置,以便进行账号关联。
- 由 Play 管理的关联:Play 会存储用户游戏账号(包括第三方账号)与 Play 游戏服务账号之间的关联。
- 进度恢复:开发者生成 Recall 令牌并将其发送给 Play,然后可以检索该令牌来恢复用户的游戏进度。
在实现 Recall API 时,开发者必须验证 Recall 令牌是否是不透明的字符串。这些令牌不得包含任何与玩家相关的敏感信息或个人身份信息(例如姓名、电子邮件地址或人口统计信息)。
游戏在生成 Recall 令牌时必须使用强大的加密算法,以保护用户数据并维护安全性。
如需详细了解 Recall 的运作方式,请参阅 Recall API 。
如需实现 Recall API 功能,请参阅在游戏中集成 Play Games 服务 Recall API。
使用 Recall API 管理多个账号
为同一用户管理多个账号时,您可以将每个账号视为不同的角色。这种方法可根据用户的具体情境量身打造体验。
如需实现此方法,请按以下步骤操作:
- 为每个角色生成一个唯一的令牌。 请参阅游戏客户端设置。
- 使用 Recall API 将这些令牌与 Play Games 服务账号相关联。 请参阅存储令牌。
- 为 Play Games 服务账号与多个角色相关联的场景设置解析政策。 请参阅开发者账号拥有的所有游戏的最新召回令牌。
虽然有多种政策选项可供选择(例如自动恢复上次使用的账号),但我们强烈建议向用户显示提示。此提示应要求用户选择要恢复的账号,从而提供清晰且人性化的体验。
现有的 Play Games 服务集成
本部分介绍了如何通过绑定玩家账号将游戏与 Play Games 服务集成。了解如何使用玩家 ID 来识别经过身份验证的玩家,以及如何为单个 Play 游戏服务用户管理多个游戏账号。
与 Player_id 绑定
玩家 ID 是 Play 游戏服务玩家账号的标识符。您的游戏可以检索通过 Play 游戏服务完成身份验证并登录游戏的任何玩家的玩家 ID。
如果游戏已通过 Play 游戏服务 Player_Id 设置后端,或者游戏需要支持儿童用户,则应使用 Player_Id 并将游戏和第三方账号与 Player_Id 绑定。
了解玩家 ID 的行为方式:
- 在游戏中保持一致:当用户在多个设备上玩同一款游戏时,玩家 ID 将保持一致。
- 不同游戏之间不一致:当用户玩不同的游戏时,玩家 ID 不一定会保持一致。
如需了解详情,请参阅新一代玩家 ID。
通过绑定功能管理每个用户的多个账号
如需将多个用户账号与单个 Play Games 服务账号相关联,请在表中创建一对多映射。
使用 Google 登录服务实现跨平台 Google 身份
使用 Google 账号登录 (SiwG) 是 Google 的主要身份解决方案,可让游戏开发者安全地接收玩家的个人资料信息:姓名、电子邮件地址和个人资料照片。
使用 Google 账号登录的一项主要优势在于,它可在各种平台(包括 Web、Android 和 iOS)上广泛使用。它提供快速、安全且熟悉的登录体验,玩家已经了解并信任这种体验。
与 Google ID 令牌的 sub 字段绑定
为了打造顺畅的跨平台体验,您可以实现一种身份验证策略,将游戏的账号系统与唯一的 Google 账号标识符相关联。此方法利用了 Android 上简化的 Play Games 服务身份验证,同时在 iOS 和 Web 等其他平台上使用标准的 Google 登录 SDK。
此策略的关键在于 Google ID 令牌中的 sub 字段。sub(或“主题”)字段是 Google 用户账号的唯一且持久的标识符。您将使用此 ID 作为“桥梁”,将玩家的所有会话与后端中的单个游戏账号相关联。
以下是简要流程:
- 在 Android 上:游戏会初始化 Play Games 服务 SDK,以在 Android 设备上自动触发身份验证。您将 Play 游戏服务 v2 集成配置为请求以下三个登录范围:
email、profile和openid。这些范围与标准 Google 登录 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 上,您将使用 Google Play Games 服务 SDK 作为主要集成点。关键在于配置 Google Play 游戏服务登录客户端,以请求额外的登录范围。这样一来,您就可以检索服务器端授权代码,您的后端可以使用该代码换取包含用户信息的 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: 适用于 Web 的 Google 登录
对于 iOS: 适用于 iOS 和 macOS 的 Google 登录
对于没有专用 SDK 的平台(例如自定义游戏引擎或 PC build),您可以手动实现 OAuth 2.0 网络服务器流程,以获取必要的令牌。
后端逻辑:将 ID 令牌(或授权代码)发送到您的后端。然后,您的服务器会执行与“在 Android 上集成”部分中的第 4 步和第 5 步中所述完全相同的验证和
sub字段绑定逻辑。
由于所有这些“使用 Google 账号登录”流程中的 sub 字段与从 Android 上的 Google Play Games 服务流程中检索到的字段(针对同一 Google 账号)相同,因此该流程成功地将用户账号关联到所有平台。