# 登录接口

# 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: 2025/11/25 14:42:25