Google Play 游戏目前处于 Beta 版公开测试阶段。

关于将 Play 游戏服务集成到现有身份验证解决方案的建议

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本文提供了一些建议,帮助您将 Play 游戏服务登录机制集成到您现有的身份验证或云端存档解决方案。虽然这些建议并不是强制性的,但遵循这些建议有助于您达到 Google Play 游戏的云端存档要求。您可以参考连续性要求预期行为页面,确认您的实现是否满足这些要求。

恢复玩家状态

在游戏的后端,游戏帐号可能由某个标识符表示,您可以通过该标识符提取和更新帐号的游戏进度。我们将其简称为帐号 ID。当玩家登录 Play 游戏服务时,您可以使用该身份验证凭据获取一个新的标识符,即 Play 游戏服务玩家 ID,此 ID 用于满足云端存档要求

Play 游戏服务多标识符工作流

当玩家登录 Play 游戏服务时,您应按以下方式继续操作:

  1. 从客户端检索 OAuth 代码并将其发送到您的服务器。
  2. 交换身份验证令牌,并从 Play 游戏服务器获取经过验证的 Play 游戏服务 ID。这样可以确保该 ID 可信,而不是有人通过使用遭破解的设备来冒充其他玩家。
  3. 尝试根据设备的条件及任何关联的标识符解析游戏帐号。

您需要在游戏中引入两个主要的新场景:

  • 将 Play 游戏服务 ID 存储在后端,并以某种方式将这些 ID 分配给现有的帐号 ID,例如:
    • 对于新玩家,系统应在某个时间点自动将其游戏进度关联到 Play 游戏服务。(例如,在游戏启动时、用户学完教程之后或完成一定数量的关卡之后,等等)。
    • 对于现有玩家,当玩家更新到集成了 Play 游戏服务 V2 的游戏版本后,系统应自动将其当前进度关联到 Play 游戏服务。
    • Play 游戏服务 ID 可与一个或多个帐号相关联,Play 游戏服务也可取消与这些帐号的关联,但应至少与一个有效帐号相关联。
  • 在已退出帐号的设备/新设备上根据 Play 游戏服务玩家 ID 自动恢复游戏进度。

如下方的例子所述,存储 Play 游戏服务 ID 并将其分配给现有帐号的方式非常灵活。您只需要记得,主要要求是:不得要求玩家必须手动登录或必须与其他身份系统建立关联,才能将 Play 游戏服务 ID 与游戏进度相关联,而且玩家的游戏进度应该能在各个平台上无缝恢复。

在设计解决方案时,请先查看您的现有系统以及该系统如何整合不同的身份提供方。有些系统会针对每个帐号使用一个标识符,而有些系统则会为每个帐号使用多个标识符。

如果您只能将每个帐号 ID 与一个标识符相关联,则需要添加相关支持,才能将 Play 游戏服务与帐号 ID 相关联。下面的解决方案展示了如何实现这点。

解决方案示例

解决方案示例包括绑定找回解决方案。

绑定是将 Play 游戏服务 ID 永久或半永久地关联到某个帐号状态的过程。在采用绑定解决方案的情况下,即使玩家在您的游戏中登录和退出其他帐号,只要他们不执行相应更改,通过 Play 游戏服务恢复的底层帐号便不会改变。我们在这里以帐号绑定为例来对此进行说明。

强绑定流程

如果采用找回解决方案,您(游戏开发者)要存储 Play 游戏服务 ID 与最近所用帐号的松散映射,以便玩家在其他设备上登录 Play 游戏服务时恢复帐号。玩家每次使用同一 Play 游戏服务 ID 登录其他游戏帐号时,此绑定都会发生更改。下面是一个流程图示例,我们在下文的找回近期帐号示例中有详细介绍:

找回流程 找回流程图

我们在下文的解决方案中附上了更多的用户流示例。

帐号绑定

如果您的游戏没有很多持有多个帐号的玩家,或者您想要鼓励玩家在您的游戏中只使用一个帐号,那么绑定可能是适合您的游戏的最佳解决方案。在此示例中,您要将登录 Play 游戏服务时看到的第一个帐号(无论是访客帐号,还是同时还与其他身份平台绑定的帐号)与 Play 游戏服务 ID 绑定。完成此绑定后,系统在新设备上会自动恢复绑定的帐号。由于我们实现的是强绑定,因此玩家还可以切换 Play 游戏服务玩家资料来更改游戏中的帐号;在这种情况下,您可以提示玩家进行确认。

Play 游戏服务帐号解析工作流

如果存在有冲突的帐号,您最好提示玩家选择一个帐号。这些冲突的情况应该只发生在那些在游戏中具有多个帐号的玩家身上,这些玩家很可能知道并且想要使用特定的帐号玩游戏。

解析帐号后,您的游戏应记住玩家的选择,除非登录标识符发生变化。如果 Play 游戏服务玩家资料发生了变化,或者玩家在游戏中通过其他标识符进行登录,则应重复执行上述步骤,因为玩家发出了强烈的信号,表明他们想要更换帐号。

解除绑定

如果您希望让玩家能够完全控制其绑定,则可以允许玩家解除其 Play 游戏服务玩家 ID 与游戏帐号的绑定。对于一些持有多个帐号的玩家,如果他们不小心将 Play 游戏服务玩家 ID 与非主帐号绑定在了一起,那么允许他们自己解除绑定就很重要。

其他帐号绑定示例

强绑定流程

在这个主要示例中,系统将某个指定 Play 游戏服务玩家 ID (1) 绑定到了看到的第一个游戏内帐号 (A);当玩家在游戏过程中退出帐号并切换到其他帐号继续玩时并没有重新绑定帐号。

您可以选择让玩家重新绑定帐号,但这并非强制要求。

在设备上切换帐号

强绑定的帐号切换流程

在这个示例中,玩家手动切换了 Play 游戏服务帐号,因而向游戏发出了强烈的信号,表明他们想要在游戏中更换到其他帐号。玩家希望游戏对该更改做出响应;因此将这种信号纳入考虑有助于提升玩家体验。

使用其他标识符的现有绑定帐号

强绑定的现有帐号流程

这个示例显示,即使是绑定到非 Play 游戏服务标识符的帐号也应该绑定到 Play 游戏服务,然后在新设备上恢复。您的游戏中大多数拥有帐号的现有玩家都属于此类别。

找回近期使用的帐号

在考虑解决方案时,经常会遇到的一个问题是多帐号体验。如果您的游戏激励高级用户创建很多帐号(例如,扭蛋游戏,或选择您自己的冒险游戏),那么将 Play 游戏服务玩家 ID 绑定到单个帐号可能无法在跨设备游戏方面提供最佳玩家体验。

如果采用找回解决方案,您要存储 Play 游戏服务玩家 ID 与游戏内帐号的松散映射,玩家只能看到切换设备或退出登录时存储的最后一个帐号。

找回流程图

在此示例中,某位玩家拥有一款游戏的三个帐号,并且该玩家要转移到新设备上:

找回流程 2

提示玩家恢复帐号时,您还可以提供“取消”或“新建”按钮,供玩家选择创建新帐号。

为简单起见,您的游戏还可以选择仅找回上次使用的帐号。在多帐号切换的用例中,这可能会更加困难,但仍然满足连续性要求。

其他找回示例

下面部分提供了使用找回功能的其他示例。

非 Android 手机

非 Android 手机上的找回流程

这部分我们将介绍如何找回现有帐号(第三方关联帐号)或在其他未登录 Play 游戏服务的设备上创建的帐号。

较为常见的流程可能是从非 Android 手机转移到 Google Play 游戏。

非 Android 手机上的找回流程 2

由于非 Android 手机不提供 Play 游戏服务,因此不会启用找回功能,玩家必须在 Google Play 游戏中手动输入其凭据。

一个帐号有多个 Play 游戏服务玩家资料

有时,可能会有多个活跃的 Play 游戏服务玩家资料之前曾“找回”某个帐号。在这种情况下,有两个效果都很好的主要解决方案:

仍然保存 找回多个玩家资料并仍然保存流程 在“仍然保存”模式下,我们会忽略指向指定帐号的重复指针。

替换 找回多个玩家资料并替换流程 在“替换”模式下,开发者需要在表中记住 Play 游戏服务到帐号的映射并清除旧的映射。这样,开发者就可以保留找回的帐号与 Play 游戏服务帐号之间单纯的一对一映射。

同一设备上的找回 同一设备上的找回流程 持有多个帐号的玩家也可以使用您实现的找回功能在其游戏帐号之间快速切换。