借助 Play 游戏服务登录功能,您可以获知玩家的游戏身份,即 Android 玩家的平台级游戏专用身份。此身份有助于在游戏与玩家之间建立关系。与其他集中式系统相比,玩家更愿意使用此身份登录。
此外,登录功能还可让您获得强大且一致的标识符,您可以将这些标识符用作云端存档系统的键。云端存档功能非常强大;可让玩家实现以下目标:
- 更换或重置设备后从上次停下的地方继续游戏
- 在多个设备上(例如,在另一部手机或 Chromebook 上)畅玩游戏
- 卸载并在日后重新安装游戏
您可以将 Play 游戏服务身份用作自己的云端存档解决方案的键,也可以使用免费的游戏存档服务。
Play 游戏服务 (PGS) 支持自动登录(一种无缝登录玩家的方式),也支持手动登录(一键式流程)。本文档介绍了这些不同的登录方法。
建议使用的登录流程
若要让玩家成功登录游戏,请使用以下登录流程:
- 在游戏启动过程中,请尝试使用自动登录功能自动登录玩家。
- 如果自动登录不起作用且用户的设备处于在线状态,请尝试手动登录。
- 如果用户拒绝手动登录,系统会记住用户的选择,不会再次显示手动登录选项,但会在启动时继续尝试自动登录。
此外,您应确保用户能够通过一个易于找到的专用按钮使用其 Play 游戏服务账号登录您的游戏。
自动登录
借助自动登录功能,用户无需任何操作即可自动登录您的游戏!如果您的游戏请求用户登录,并在 Google Play 游戏应用中启用了自动登录设置,您将收到用户的 PGS 身份凭据,而用户将会看到 PGS 登录界面。
用户可以控制自动登录设置,并且可以选择自动登录所有游戏,也可以让系统在每次启动游戏时询问。
手动登录
如果用户未自动登录游戏,您可以要求他们手动登录。用户可以通过游戏顶部显示的对话框一键登录。
允许显示 PGS 弹出式窗口,以获得正确的登录体验
使用 PGS 时,用户需要知道自己已登录。这通过显示 PGS 登录体验来实现。
如需显示登录体验,请在游戏启动期间调用 GamesClient
类的 setViewForPopups()
方法。这对于提供正确的用户体验至关重要。
OAuth 范围和 PGS
PGS 依赖 OAuth 系统来允许用户授权您的游戏访问他们的账号。OAuth 范围是指您作为开发者可以请求的权限。如果获得这些权限,您的游戏便可代表用户调用某些 API,并且您还可以访问用户 Google 账号的某些部分。
PGS 针对游戏提供唯一范围 (games-lite
),如果您的游戏使用游戏存档功能,将依赖另一个范围 (drive.appdata
)。通过游戏存档功能,您可以访问用户的 Google 云端硬盘账号,游戏数据便存储在此处。
您的游戏可以请求您为用户打造出色的游戏体验所需的任何范围。您的游戏可以在一个软件包中请求所需的所有镜重范围,从而限制 Google 账号访问权限请求的数量。不过,这种方法有一个重大缺点。如果您请求的范围超出了 PGS 专用范围,自动登录将无法成功。自动登录是让玩家登录您的游戏的最佳方式。
最佳实践是使用增量范围请求。您的游戏应在初始请求中先请求仅限 PGS 的作用域,并在更相关的时机单独请求其他作用域。
系统会针对每个范围使用不同的界面来授予 OAuth 访问权限。这样,用户就可以精细地决定要授予哪些镜重范围的访问权限。通过仅使用 PGS 范围的自动登录功能,用户无需与任何 OAuth 提示互动,从而减少登录过程中的麻烦。
支持多种登录方法
PGS 为 Android 玩家提供游戏身份,但此身份不一定是与用户关联的唯一身份。您可以同时使用 PGS、社交网络 ID 和您自己的游戏内 ID 系统为玩家提供登录选项。每个系统都能为您和玩家提供独特价值,所有系统可以协同运作,从而为 Android 玩家提供出色体验。
安全地检索并验证玩家身份,以进行后端集成
您可以请求服务器授权代码,以便服务器在获得已登录玩家的授权后通过 REST API 直接与 Play 游戏服务的服务器通信。这样一来,您就可以在获得授权后直接访问玩家的 ID、个人资料和其他信息(例如好友列表)。如果您在后端存储任何玩家 ID、好友 ID 或其他相关数据,就必须使用这种方法,以免出现在设备端操控这些字段的情况。
此外,对于某些较老的游戏和玩家,Android SDK 针对某个玩家返回的玩家 ID 可能与其他玩家在同一游戏中查看该玩家时看到的 ID 不同;在使用好友列表时尤为如此。但是,REST API 中返回的 player_id
始终是一致的,并且始终是其他玩家看到的 ID。
客户端实现
如需了解如何在 Android 上实现登录支持,请参阅 Android 游戏中的登录功能。