登录

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

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

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

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

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

建议使用的登录流程

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

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

此外,您应确保用户能够通过专用且易于查找的按钮,使用自己的 Play 游戏服务帐号登录游戏。

自动登录

自动登录功能可让用户顺畅登录您的游戏,完全自动!如果您的游戏请求用户登录,并且已启用自动登录设置(在 Google Play 游戏应用中),您将收到用户的 PGS 身份凭据,而用户会看到 PGS 登录体验。

用户可以控制自动登录设置,并且可以选择自动登录所有游戏,也可以让系统在每次启动游戏时询问。

自动登录

手动登录

如果用户未自动登录游戏,您可以要求用户手动登录。用户只需点击游戏顶部的对话框,即可登录。

手动登录

允许 PGS 弹出式窗口提供正确的登录体验

使用 PGS 时,用户需要知道自己是否已登录。通过显示 PGS 登录体验,可以做到这一点。

如需显示登录体验,请在游戏启动期间调用 GamesClient 类的 setViewForPopups() 方法。这对于确保正确的用户体验至关重要。

OAuth 范围和 PGS

PGS 依靠 OAuth 系统来允许用户将您的游戏访问权限授予其帐号。OAuth 范围是您作为开发者可以请求的权限。获得这些权限后,游戏可以代表用户调用某些 API,并且还允许您访问其 Google 帐号的特定部分。

PGS 对游戏拥有唯一范围 (games-lite),如果您的游戏使用游戏存档功能,则依赖其他范围 (drive.app_data)。通过游戏存档功能,您可以访问用户的 Google 云端硬盘帐号,游戏数据便存储在此处。

您的游戏可以请求所需的任何范围,为用户打造出色的游戏体验。您的游戏可以在一个 bundle 中请求所需的所有范围,从而限制了对 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 游戏中的登录功能