继 Google 登录 API 弃用之后,我们将在 2026 年移除 games v1 SDK。在 2025 年 2 月之后,您将无法在 Google Play 上发布新集成了 games v1 SDK 的游戏。我们建议您改用 games v2 SDK。
尽管现有已集成 games v1 的游戏在未来几年仍可继续运行,但我们鼓励您从 2025 年 6 月开始迁移到 v2。
本指南介绍如何使用 Play Games Services v1 SDK。如需了解最新 SDK 版本的信息,请参阅v2 文档。
Play Games Services 登录可为您提供玩家的游戏身份,这是面向 Android 玩家的平台级游戏专用身份。此身份有助于在您的游戏和玩家之间建立关系。相比其他集中式系统,玩家更愿意使用此身份进行登录。
此外,登录还为您提供了强大而一致的标识符,可用作云存储系统的密钥。云存储非常有价值;它使玩家能够执行以下操作:
- 如果他们更换或重置设备,可以从上次离开的地方继续玩。
- 在多个设备上玩游戏(例如,在另一部手机或 Chromebook 上)
- 卸载并随后重新安装游戏
您可以使用 Play Games Services 身份作为您自己的云存储解决方案的密钥,也可以使用免费的已保存游戏服务。
Play Games Services (PGS) 支持自动登录(一种零摩擦的玩家登录方式)以及手动登录(一键式流程)。本文档介绍了这些不同的登录方法。
推荐的登录流程
为了让玩家成功登录您的游戏,请使用以下登录流程:
此外,您应该确保用户可以通过一个专门的、易于查找的按钮,使用他们的 Play Games services 帐号登录您的游戏。
自动登录
自动登录允许用户零摩擦地登录您的游戏 - 它是自动的!如果您的游戏请求用户登录并且已启用自动登录设置(在 Google Play Games 应用中),那么您将收到用户的 PGS 身份凭据,并且用户将看到 PGS 登录体验。
自动登录是一个用户可以控制的设置。用户可以选择自动登录所有游戏,或者每次都被询问。
手动登录
如果用户没有自动登录游戏,您可以要求他们手动登录。用户可以通过显示在您的游戏顶部的对话框一键登录。
允许 PGS 弹窗以获得正确的登录体验
使用 PGS 时,用户需要知道他们已登录。这可以通过显示 PGS 登录体验来实现。
为了显示登录体验,在游戏启动期间调用 GamesClient
类的 setViewForPopups()
方法。这对于实现正确的用户体验至关重要。
OAuth Scope 和 PGS
PGS 依赖 OAuth 系统允许用户授权您的游戏访问其帐号。OAuth Scope 是您可以作为开发者请求的权限。如果获得授权,这些权限可让您的游戏代表用户调用某些 API,并允许您访问其 Google 帐号的某些部分。
如果您的游戏使用已保存游戏功能,PGS 有一个游戏专用的唯一 Scope (games-lite
) 并依赖于另一个 Scope (drive.appdata
)。已保存游戏功能提供对用户 Google Drive 帐号的访问权限,游戏数据就存储在此处。
您的游戏可以请求您需要的所有 Scope,以创建出色的用户游戏体验。您的游戏可以一次性请求所需的所有 Scope,从而限制请求 Google 帐号访问权限的次数。然而,这种方法有一个主要缺点。如果您请求了超出 PGS 特定的 Scope,自动登录将无法成功。自动登录是将玩家登录到您的游戏的最佳方式。
最佳实践是使用增量 Scope 请求。您的游戏应在初始请求中首先请求仅 PGS 的 Scope,并在更相关的时刻单独请求其他 Scope。
OAuth 访问权限是为每个 Scope 使用不同的屏幕授予的。这允许用户以精细的方式决定要授予哪些 Scope 的访问权限。通过仅使用 PGS Scope 进行自动登录,用户无需与任何 OAuth 提示互动,从而减少了登录摩擦。
支持多种登录方法
PGS 为 Android 玩家提供了游戏身份,但这不必是连接到您的用户的唯一身份。您可以同时使用 PGS、社交网络 ID 和您自己的游戏内 ID 系统登录玩家。每个系统都为您和您的玩家提供了独特的价值,并且可以共同努力为 Android 玩家创造出色的体验。
安全地检索和验证玩家身份以进行后端集成
您可以请求服务器授权码,以便您的服务器通过 REST API 直接与 Play Games Services 服务器通信,并获得已登录玩家的授权。这可以直接访问玩家的 ID、个人资料和其他信息(例如好友列表,如果获得授权)。如果您在后端存储任何玩家 ID、好友 ID 或其他相关数据,则必须使用此方法来消除设备端篡改这些字段的可能性。
此外,对于某些较旧的游戏和玩家,Android SDK 为玩家返回的玩家 ID 可能与同一游戏中其他玩家查看该玩家时看到的 ID 不同 - 这在使用好友列表时尤其相关。但是,REST API 中返回的 player_id
始终一致,并且始终是其他玩家看到的 ID。
客户端实现
要了解如何在 Android 上实现登录支持,请参阅Android 游戏中的登录。