登录

Google 登录 API 弃用后,我们将于 2026 年移除 Play 游戏服务 v1 SDK。自 2025 年 2 月起,您将无法在 Google Play 上发布新集成了 Games v1 SDK 的游戏。我们建议您改用游戏 v2 SDK。
虽然集成旧版游戏 v1 的现有游戏在未来几年内仍可正常运行,但我们建议您从 2025 年 6 月开始迁移到 v2
本指南适用于 Play 游戏服务 v1 SDK。如需了解最新 SDK 版本,请参阅 v2 文档

借助 Play 游戏服务登录功能,您可以获知玩家的游戏身份,即 Android 玩家的平台级游戏专用身份。此身份有助于在游戏与玩家之间建立关系。与其他集中式系统相比,玩家更愿意使用此身份登录。

此外,登录功能还可让您获得强大且一致的标识符,您可以将这些标识符用作云端存档系统的键。云端存档功能非常强大;可让玩家实现以下目标:

  • 更换或重置设备后从上次停下的地方继续游戏
  • 在多个设备上(例如,在另一部手机或 Chromebook 上)畅玩游戏
  • 卸载并在日后重新安装游戏

您可以使用 Play 游戏服务身份作为自己的云端存档解决方案的键,也可以使用免费的游戏存档服务

Play 游戏服务 (PGS) 支持自动登录(一种零摩擦的玩家登录方式)以及手动登录(一种一键式流程)。本文档介绍了这些不同的登录方法。

建议使用的登录流程

若要让玩家成功登录游戏,请使用以下登录流程:

  1. 在游戏启动过程中,尝试使用自动登录功能自动让玩家登录。
  2. 如果自动登录不起作用,并且用户设备处于联网状态,请尝试手动登录
  3. 如果用户拒绝手动登录,请记住用户的选择,不要再次显示手动登录,但继续在启动时尝试自动登录。

此外,您还应确保用户能够通过专用且易于找到的按钮,使用其 Play Games 服务账号登录您的游戏。

自动登录

自动登录功能可让用户顺畅地登录游戏,无需任何操作,因为它是自动的!如果您的游戏请求用户登录,并在 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。

如需了解详情,请参阅离线访问REST API 文档。

客户端实现

如需了解如何在 Android 上实现登录支持,请参阅 Android 游戏中的登录功能