# 登录接口(必接)

# 1、接口说明

WARNING

调用接口前必须调用 SDK 初始化,并且登录接口和登出接口应配合使用以实现账号切换功能。游戏在调用此接口后,在调用支付接口之前,请先接入上报角色接口。

# 2、登录接口(必接)

# 2.1、拉起登录

调用代码示例如下:

import { DHRequestCode, DHResultCode, DHSDKHelper, DHUploadGameInfoType } from 'dhsdkhelper'

/**
 * @param context    上下文
 */
DHSDKHelper.login(getContext(this))

调用后在初始化设置的 SDK 回调将收到如下回调码:

...
//登录结果
case DHRequestCode.REQ_LOGIN:
if (resultCode == DHResultCode.OK) {
    //登录成功
} else {
    //登录失败
}
break
...

登录成功,回调数据示例如下:

{
  "accountName": "131****0130",
  "accountId": 1696674719,
  "accountView": "131****0130",
  "sign": "3edf1c178506041e54bcf58b0ede45e2",
  "token": "0e9c17aeeacd4d8abc61ec4261e4cdfb",
  "region": 1,
  "loginType": 1,
  "userExtraInfo": {
    "avatar": "",
    "nickName": ""
  },
  "loginTimestamp": 1719763200,
  "expireTimestamp": 1720627200
}

账号信息,主要参数说明如下:

参数 类型 必传字段 统一字段 说明
accountName string 是 是 账号名称
accountId number 是 是 账号 ID,唯一标识
accountView string 是 否 账号缩略,用于界面显示,例如顶部登录欢迎弹窗
sign string 是 是 登录签名,参考服务器文档
token string 是 是 登录令牌,参考服务器文档
region number 是 是 所属地区,1:中国大陆;0:港澳台及海外
loginType number 是 是 登录类型:当值为 10 时即游客类型,需要调用账号绑定接口。其他类型接入方无需处理,直接传送给服务器
userExtraInfo JsonObject 是 是 用户额外信息,接入方一般无需关注
loginTimestamp number 是 是 登录时间,秒级时间戳,参考服务器文档
expireTimestamp string 是 是 登录失效时间,秒级时间戳,参考服务器文档

操作危险

  • 不能将 accountName 或者 accountView 作为用户的唯一 ID,这些通常为账号名称。如果用其作为唯一标识,必将导致串号。
  • 不建议游戏在 SDK 登录成功后长期缓存 SDK 的账号信息用于再次登录。否则,一旦账号信息过期,可能导致玩家登录验证失败而无法登录,需重启游戏等操作才能解决。

WARNING

SDK 登录成功后回调的 accountId、token 等数据需要游戏服务端进行校验。如校验失败,需调用 SDK 的 logout 接口,并根据具体情况重新调用 SDK 的登录接口,以防止出现持续无法登录的问题。

# 2.2、退出登录(必接)

DANGER

当游戏收到退出回调时需要返回主界面。

WARNING

注意该接口为退出登录,指的是退出账号登录,并非注销账号或退出游戏

调用代码示例如下:

import { DHRequestCode, DHResultCode, DHSDKHelper, DHUploadGameInfoType } from 'dhsdkhelper'

/**
 * @param context    上下文
 */
DHSDKHelper.logout(getContext(this))

调用后在初始化设置的 SDK 回调将收到如下回调码:

...
//登出结果
case DHRequestCode.REQ_LOGOUT:
if (resultCode == DHResultCode.OK) {
    //登出成功,游戏需要在此处清理场景回到登录主页面
} else {
    //登出失败
}
break
...

# 2.3、账号切换(必接)

DANGER

  • SDK 未提供单独的切换账号接口,需要使用拉起登录和退出登录组合实现。
  • 接入者在调用登录接口进入游戏后,如果需要使用切换账号功能,应先调用登出接口,之后再调用登录接口,即可完成切换账号功能。

# 2.4、上报角色信息(必接)

DANGER

上报角色数据:在创角成功、登录成功、退出游戏成功、升级成功时需要调用。请注意,需在触发动作成功后进行上报。鸿蒙目前只需要在创角成功和登录成功两个时机调用接口即可

调用代码示例如下:

import { DHRequestCode, DHResultCode, DHSDKHelper, DHUploadGameInfoType } from 'dhsdkhelper'


let uploadGameUserInfo: ESObject = {
      areaId: '1006', // 大区ID。纯数字
      areaName: '罗刹门', // 大区名称
      roleId: '1008', // 角色ID
      roleName: 'Hisoka', // 角色名称
      roleLevel: '1', // 角色等级,纯数字
      roleVipLevel: '1', // VIP等级,纯数字,若无VIP系统传"0"
      partyName: '要你命三千', // 角色所属公会,纯文本,无公会系统则传"无"
      roleBalance: '132066', // 角色虚拟币余额,纯数字,若无值则传入"0"
      roleCreateTime: '1720078887'// 游戏角色创建时间,纯数字,10位Unix时间戳(秒级)
}
/**
 * @param context     上下文
 * @param type         上报类型
 * @param gameUserInfo 角色数据
 */
DHSDKHelper.setGameUserInfo(getContext(this), DHUploadGameInfoType.LOGIN_GAME,JSON.stringify(uploadGameUserInfo))

上报类型,主要类型示例如下:

type value
创建角色成功 CREATE_ROLE
角色升级成功 LEVEL_UP
登录游戏成功 LOGIN_GAME
退出游戏成功 EXIT_GAME

WARNING

特别注意:创建角色后,上报创角事件的同时还需要上报登录事件。

角色信息,主要参数说明如下:

参数 类型 必传字段 说明
areaId string 是 大区 ID
areaName string 是 大区名称
roleId string 是 角色 ID
roleName string 是 角色名称
roleLevel string 是 角色等级,城堡等级、钻石等级等
roleVipLevel string 是 VIP 等级
partyName string 是 角色所属公会
roleBalance string 是 角色虚拟币余额
roleCreateTime string 是 游戏角色创建时间,秒级时间戳
Last Updated: 2026/7/10 16:21:52