HarmonyOS 鸿蒙Next一文教你区分华为账号unionId、openId和游戏playerId
背景介绍当前绝大部分App都会要求用户先完成注册、登录等环节,方可使用应用。用户登录后,开发者一般会使用唯一标识记录用户信息,以实现后续的相关功能,比如记录当前用户的游戏进度、排行榜,道具发放到指定用户等。好的用户注册、登录等体验,可以极大的提升用户对App的使用兴趣,提高用户转化率和活跃度。
华为帐号遵循OAuth 2.0和OpenId Connect国际标准协议,在手机、平板、电视和车机等多个平台上,让用户可以通过华为帐号快速、便捷地登录APP,共享华为平台的帐号资源。
那么问题来了,开发者使用了华为帐号登录了应用或者游戏,华为会提供什么样的用户ID供开发者去唯一标识一个用户呢?
openId、unionId和playerId目前,华为对外提供的帐号登录服务主要包括如下几块:
HMS Core的Account SDK提供的华为帐号登录
HMS Core的Game Service SDK提供的华为游戏帐号登录
认证服务(agconnect-auth SDK)提供的华为帐号登录
认证服务(agconnect-auth SDK)提供的华为游戏帐号登录
本章节我们主要讲解HMS Core提供的华为帐号登录和华为游戏帐号登录,认证服务涉及的帐号登录我们放在下一篇。划重点如下:
表1-1 HMS Core帐号和游戏服务提供的用户标识
HMS Core分类
应用场景
相同点
不同点
Account SDK
普通应用或者游戏使用华为帐号快速授权登录自己的应用或游戏,并获取Account服务提供的相关用户标识。
对终端用户而言体验都是华为帐号登录应用或游戏
Account服务提供的用户标识为openId或unionId,用户可根据自己的诉求选择任意一个。
Game Service SDK
游戏使用华为帐号快速授权登录自己的游戏,并获取Game Service服务提供的相关用户标识。
Game Service服务提供的用户标识是playerId
那么问题来了:
1.既然对终端用户登录体验是一致的,作为一个游戏开发者,我应该选择Account SDK还是Game Service SDK呢?
2.如果我选择Account SDK接入,怎么根据自己的业务诉求去选择openId还是unionId?
…
问题本质:openId、unionId和playerId的区别和联系。
在介绍这三者区别之前,我们需要储备如下背景知识:
表1-2 背景知识
分类
说明
uid
华为系统给每个华为帐号(或者叫用户帐号)分配的唯一标识
clientId
华为系统给每个应用分配的应用唯一标识,这里您可以简单理解为appid
developerId
华为系统给每个开发者帐号分配的唯一标识,开发者帐号您可以简单理解为您已经注册的、用于登录华为控制台管理应用信息、商品和发布等的帐号。
一个开发者帐号下可以管理多个应用信息。
一张表告诉您openId、unionId和playerId的区别
表1-3 openId、unionId和playerId详细说明
分类
说明
对比结论
openId
由华为帐号(用户帐号)和应用唯一标识组合加密起来的用户标识
简单理解:openid≈uid+clientid
相同点:三者都可以用来做用户标识。
不同点(如何选择):
(1)如果开发者需要互通该账号下的所有应用,因为不同应用clientId不同,同一开发者帐号developerId相同,那么用户使用同一个华为帐号(uid相同),此时unionId和playerId必然相同,推荐使用unionId或playerId。
(2)playerId仅跟华为帐号(用户帐号)有关,不会随着应用或开发者帐号信息变化而变化,用于游戏类应用。华为游戏服务提供的如玩家排行榜、存档等各种功能,都是关联到该用户标识的。如果您的游戏仅仅是使用华为帐号登录并唯一标识用户,不使用游戏的一些个性化服务,如防沉迷、排行榜等,那么您可以不选择playerId。
unionId
由华为帐号(用户帐号)和开发者帐号组合加密起来的用户标识。
简单理解:unionid≈uid+developerid
playerId
华为游戏服务给华为帐号(用户帐号)封装处理后的对外开放的游戏玩家标识。
简单理解:playerId≈uid