将 Play 游戏服务与现有身份解决方案集成

本页面介绍了如何将 Play 游戏服务登录与您现有的身份或云保存解决方案集成。尽管这些建议是可选的,但它们可以帮助您满足 Google Play 游戏电脑版的云保存要求。请使用连续性要求预期行为页面,验证您的实现是否满足这些要求。

恢复玩家状态

在您游戏的后端,游戏帐号很可能通过某个标识符来表示,以便您获取和更新玩家在游戏中的进度。我们简称其为您的帐号 ID。当玩家登录 Play 游戏服务时,您可以使用该身份验证获取一个新的标识符,即 Play 游戏服务玩家 ID,它用于支持云保存要求

Play Game Services Multi Idenitifier Workflow

当玩家使用 Play 游戏服务登录时,您应按以下步骤操作:

  1. 从客户端检索 OAuth 代码,并将其发送到您的服务器。
  2. 交换身份验证令牌,并从 Play 游戏服务器获取经验证的 Play 游戏服务 ID。这可确保 ID 受到信任,且不会有人利用受感染的设备冒充其他玩家。
  3. 根据设备条件和任何关联的标识符尝试解析游戏帐号。

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

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

您如何存储 Play 游戏服务 ID 并将其分配给现有帐号是灵活的,如下面的示例所示。需要牢记的主要要求是,玩家无需手动登录或与其他身份系统建立链接,即可在 Play 游戏服务 ID 和游戏进度之间建立链接,并且玩家进度应在不同平台上无缝恢复。

在设计您的解决方案时,首先要查看您现有的系统以及它如何集成不同的身份提供商。有些系统每个帐号使用单个标识符,而另一些系统每个帐号使用多个标识符。

如果您只能将每个帐号 ID 与单个标识符关联,则需要添加支持以将 Play 游戏服务与它关联。以下解决方案演示了如何做到这一点。

解决方案示例

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

绑定是将 Play 游戏服务 ID 永久或半永久性地关联到帐号状态的过程。在绑定的情况下,即使玩家在您的游戏中退出登录并使用其他帐号登录,通过 Play 游戏服务恢复的底层帐号也不会在未经玩家操作的情况下更改。我们在此处通过帐号绑定对此进行介绍。

Strong Binding Flow

通过召回,作为游戏开发者,您会存储 Play 游戏服务 ID 和上次查看的帐号(一个或多个)的松散映射,以便玩家在其他设备上使用 Play 游戏服务登录时进行恢复。每次玩家使用相同的 Play 游戏服务 ID 登录另一个游戏帐号时,此绑定都会发生更改。下面是一个示例流程图,我们将在下面的召回最近帐号示例中更详细地介绍它

Recall Flow Recall Flowchart

更多用户流程示例附在下面的解决方案中。

帐号绑定

如果您的游戏没有很多多帐号玩家,或者您希望鼓励玩家在您的游戏中拥有一个单一帐号,那么绑定可能是您的游戏的最佳解决方案。在此示例中,您会将使用 Play 游戏服务登录时看到的第一个帐号(无论是访客帐号还是已与另一个身份平台绑定的帐号)与 Play 游戏服务玩家 ID 绑定。绑定后,该绑定帐号会自动在新设备上恢复。由于我们正在进行强绑定,玩家也可以切换 Play 游戏服务资料以更改游戏内的帐号,并且您可以在此场景中提示玩家确认。

Play Game Services Account Resolution Workflow

如果存在冲突的帐号,我们建议您要求玩家选择一个帐号。这些冲突情况只应发生在您的游戏中拥有多个帐号的玩家身上,因此他们可能具备使用特定帐号进行游戏的知识和意愿。

一旦帐号已解析,除非登录标识符发生更改,否则您的游戏应记住玩家的选择。如果 Play 游戏服务资料发生更改,或者玩家登录到游戏中的不同标识符,则应重复上述步骤,因为玩家已明确表示他们希望更改帐号。

解绑

如果您想让玩家完全控制其绑定,您可以为玩家提供解绑其 Play 游戏服务玩家 ID 与游戏帐号的能力。这对于某些多帐号玩家可能很重要,如果他们不小心将自己的 Play 游戏服务玩家 ID 与非主帐号绑定。

更多帐号绑定示例

Strong Binding Flow

此主要示例显示,给定的 Play 游戏服务玩家 ID (1) 绑定到第一个在游戏中看到的帐号 (A),并且当玩家退出游戏进度以在另一个帐号上玩时,不会重新绑定。

您可以选择允许玩家重新绑定其帐号,但这不是必需的。

在设备上切换帐号

Strong Binding Switch Accounts Flow

在此处,玩家已手动切换 Play 游戏服务帐号,因此向游戏发出了一个明确的信号,表明他们希望将其游戏内帐号更改为另一个帐号。响应此更改是玩家所希望的;考虑此信号会带来更好的玩家体验。

已与其他标识符绑定的现有帐号

Strong Binding Existing Account Flow

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

召回最近帐号

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

在召回解决方案中,您存储了 Play 游戏服务玩家 ID 和游戏内帐号的松散映射,玩家在切换设备或退出登录时,只需看到您上次存储的帐号即可。

Recall Flowchart

在此示例中,一个玩家拥有一个游戏的三​个帐号,然后切换到新设备

Recall Flow 2

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

为简单起见,您的游戏可以选择只召回上次看到的帐号。这对于多帐号切换用例可能更困难,但仍符合连续性要求。

更多召回示例

以下部分包含使用召回的更多示例。

非 Android 手机

Recall Non-Android Flow

这里我们展示了召回已存在(已关联第三方帐号)的帐号,或者从另一个未登录 Play 游戏服务的设备创建的帐号。

更常见的流程可能是从非 Android 手机开始,然后转移到 Google Play 游戏电脑版。

Recall Non-Android Flow 2

由于非 Android 手机没有 Play 游戏服务,因此没有活跃的召回功能,玩家必须在 Google Play 游戏电脑版中手动输入其凭据。

一个帐号的多个 Play 游戏服务资料

有时可能会有多个活跃的 Play 游戏服务资料,这些资料之前曾“召回”过给定帐号。对于这种情况,有两种主要解决方案同样适用

无论如何都保存 召回多个资料无论如何都保存流程 在“无论如何都保存”模型中,我们忽略指向给定帐号的重复指针。

覆盖它 召回多个资料覆盖流程 在“覆盖它”模型中,开发者需要记住 Play 游戏服务到帐号的映射,并在其表中的“覆盖它”模型中清除旧映射。通过这样做,他们可以保持召回帐号和 Play 游戏服务帐号之间清晰的 1:1 映射。

同设备召回 同设备召回流程 多帐号玩家也可以使用您的召回实现来快速切换他们的游戏帐号。