HarmonyOS 鸿蒙Next一文教你区分华为账号unionId、openId和游戏playerId

2025-10-05 19:12:49

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