小游戏与官方账号互通/隔离

背景

小游戏发行可能存在与其他端的包体进行账号互通或隔离的应用场景,考虑到每款游戏产品的需求差异化,星云平台统一提供游戏账号层级互通能力,将多端的游戏账号隔离具体实现逻辑下沉至游戏研发侧处理。

类比于手游APP,星云实现了官方Android渠道和官方Apple渠道的账号互通,透传给游戏的聚合OpenD为同一个值,若游戏需要将官方Android渠道和官方Apple渠道的游戏账号信息进行隔离,则由游戏方判断用户渠道来源做差异化实现即可。

一、互通方案

星云实现了国内官方渠道与微信小游戏的账号互通:玩家于微信小游戏、官方Apple渠道、官方Android渠道、官方Android微端渠道等不同端登录,若关联同一微信UnionD,生成的聚合OpenD相同,所以如果发行方本身的需求是上述多端互通,则游戏侧无需特殊处理。具体说明详见官方渠道与微信小游戏渠道互通介绍。

二、隔离方案

游戏实现账号隔离需根据星云渠道模版标识进行判断处理,渠道模版标识详见 渠道版本信息

渠道模版标识代码获取途径:

  1. 客户端:在配置信息中即可获取到渠道模版标识,如"聚合渠道SDK-Unity(C#)->获取参数配置接口",具体获取方式请参照各系统的SDK接入文档。
  2. 服务端:在账号登录校验接口里统一返回渠道模版标识字段 channel_template_code,具体说明详见, 登录校验接口-返回参数。

样例

需求场景:小游戏分类渠道与手游分类渠道之间的游戏账号隔离(即手游和小游戏之间的账号不互通)

游戏分类:

  1. 小游戏分类渠道:微信小游戏渠道和官方Android微端渠道
  2. 手游分类渠道:官方Android渠道和官方Apple渠道

伪代码:

if ($channelTemplateCode=="nbandroid"  || $channelTemplateCode=="nbios"){//具体渠道模版标识参考上述的 “渠道版本信息” 文档内容
    $gameUserId = hash($openid + "{特殊标识}") // 如特殊标识定义为手游渠道分类来源"mobileGame"
}else{
    $gameUserId = hash($openid)
}