跳到主要内容

访客账户绑定

概述

有些游戏允许用户在没有平台账户(Garena / Facebook / Google账户等)的情况下使用访客账户玩游戏。

如果用户想要获得更好的游戏体验,例如与平台好友互动、跨设备使用相同的游戏账号,他们可以将自己的访客账户与平台账户绑定。

这个文档介绍了访客账户绑定的流程。

流程

  • 访客绑定由游戏侧发起
  • 进行最终绑定步骤前,游戏侧需确保平台账号在游戏中没有角色(没有玩过游戏)
  • 游戏侧需检查绑定结果,如果绑定成功,游戏客户端需调用MSDK接口清理本地访客账户以完成绑定流程
  • 游戏侧调用GOP服务器访客绑定API v2 /game/guest/swap 成功完成访客绑定后,用户的OpenID保持不变

协作与流程

guestbindv2flowchart.png

步骤:

  1. 游戏客户端调用MSDK API开始访客绑定流程。
  2. MSDK跳转平台app或网页,让用户完成登录授权。
  3. 用户授权后,MSDK获得新平台账户的access token和OpenID。
  4. MSDK将新的access token和OpenID返回给游戏客户端(新OpenID的生成基于所用平台)。
  5. 游戏客户端将新的access token和OpenID传给游戏服务器,请求访客绑定。
  6. 游戏服务器检查OpenID在游戏中无角色(确保此平台账号此前未玩过该游戏)。
  7. 游戏服务器调用GOP服务器API v2 (/game/guest/swap)请求访客绑定。
  8. GOP服务器处理访客绑定请求,并返回结果给游戏服务器。如果访客绑定成功,原先的访客账户将无法被使用。
  9. 游戏服务器将访客绑定接口回传给游戏客户端。
  10. 如果访客绑定成功,游戏客户端需调用MSDK API重置本地的访客账户,并使用新的已绑定的平台账号继续游戏。如果访客绑定失败,游戏客户端无需调用MSDK API,可使用原先的访客账号继续游戏。

注:步骤4的新OpenID只用于检查脸书账号下有无游戏档案,用户OpenID不受影响。

时序图

guestbindv2sequencediagram.png

获取绑定信息

获取绑定信息API将要求用户登录到一个平台,并在回调中返回登录信息,这些信息可以用于执行与GOP的绑定操作。

以下代码示例展示了如何获取平台认证令牌,这是访客绑定流程的第一步。

accountManager.getGuestBindingTokenV2(platformType, callback);

处理访客账户绑定结果

获取访客绑定令牌后,您需要将其发送到游戏服务器以执行实际的绑定操作。游戏服务器应调用GOP Server side API /game/guest/swap将访客账户绑定到平台账户。

在游戏服务器端完成绑定操作后,您需要使用以下平台特定方法通知SDK结果:

如果服务器返回访客绑定成功,游戏客户端需要调用

accountManager.onBindGuestSuccess();

仅在Android上,如果服务器返回访客绑定失败,游戏客户端需要调用

accountManager.onBindGuestFailure();