登录接口
1、接口说明
危险
调用接口前必须调用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
...
登录成功,回调数据示例如下:
{
"account": "131****0130",
"accountid": 1696674719,
"accountview": "131****0130",
"sign": "3edf1c178506041e54bcf58b0ede45e2",
"token": "0e9c17aeeacd4d8abc61ec4261e4cdfb",
"region": 1,
"logintype": 1,
"userinfo": {
"headimgurl": "",
"nickname": ""
}
"timestamp": 1720627200
}
账号信息,主要参数说明如下:
参数 | 类型 | 必传字段 | 统一字段 | 说明 |
---|---|---|---|---|
account | string | 是 | 是 | 账号名称 |
accountid | number | 是 | 是 | 账号ID,唯一标识 |
accountView | string | 是 | 否 | 账号缩略,用于界面显示,例如顶部登录欢迎弹窗 |
sign | string | 是 | 是 | 登录签名 |
token | string | 是 | 是 | 登录令牌 |
region | number | 是 | 是 | 所属地区,1 :中国大陆;0 :港澳台及海外 |
logintype | number | 是 | 是 | 登录类型 |
userinfo | JsonObject | 是 | 是 | 用户额外信息,接入方一般无需关注 |
logintime | number | 是 | 是 | 登录时间,秒级时间戳 |
timestamp | string | 是 | 是 | 登录失效时间,秒级时间戳 |
操作危险
- 不能将accountName或者accountView作为用户的唯一ID,这些通常为账号名称。如果用其作为唯一标识,必将导致串号。
- 不建议游戏在SDK登录成功后长期缓存SDK的账号信息用于再次登录。否则,一旦账号信息过期,可能导致玩家登录验证失败而无法登录,需重启游戏等操作才能解决。
危险
SDK登录成功后回调的accountId、token等数据需要游戏服务端进行校验。如校验失败,需调用SDK的logout接口,并根据具体情况重新调用SDK的登录接口,以防止出现持续无法登录的问题。
2.2、退出登录
危险
注意该接口为退出登录,指的是退出账号登录,并非注销账号或退出游戏
危险
当游戏收到退出回调时需要返回主界面。接入方必须清理缓存的登录状态,进入游戏前须判断是否已登录,否则会导致串号串服等问题!
调用代码示例如下:
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、账号切换
危险
- SDK未提供单独的切换账号接口,需要使用拉起登录和退出登录组合实现。
- 接入者在调用登录接口进入游戏后,如果需要使用切换账号功能,应先调用登出接口,之后再调用登录接口,即可完成切换账号功能。
2.4、上报角色信息
危险
上报角色数据:在创角成功、登录成功、退出游戏成功、升级成功时需要调用。请注意,需在触发动作成功后进行上报。鸿蒙目前只需要在创角成功和登录成功两个时机调用接口即可
调用代码示例如下:
import { DHRequestCode, DHResultCode, DHSDKHelper, DHUploadGameInfoType } from 'DHSDKHelper'
let uploadGameUserInfo: ESObject = {
zoneId: '1',// 大区ID。纯数字,若无值则传入"1"
areaId: '1006', // 大区下的服务器ID,纯数字
areaName: '罗刹门', // 大区名称
roleId: '1008', // 角色ID
roleName: 'Hisoka', // 角色名称
roleLevel: '1', // 角色等级,纯数字
roleVipLevel: '1', // VIP等级,纯数字,若无VIP系统传"0"
userGuild: '要你命三千', // 角色所属公会,纯文本,无公会系统则传"无"
roleBalance: '132066', // 角色虚拟币余额,纯数字,若无值则传入"0"
roleCTime: '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 |
危险
特别注意:创建角色后,上报创角事件的同时还需要上报登录事件。
角色信息,主要参数说明如下:
参数 | 类型 | 必传字段 | 说明 |
---|---|---|---|
zoneId | string | 是 | 大区ID。纯数字,若无值则传入"1" |
areaId | string | 是 | 大区下的服务器ID,纯数字 |
areaName | string | 是 | 大区名称 |
roleId | string | 是 | 角色ID |
roleName | string | 是 | 角色名称 |
roleLevel | string | 是 | 角色等级,城堡等级、钻石等级等 |
roleVipLevel | string | 是 | VIP等级 |
userGuild | string | 是 | 角色所属公会 |
roleBalance | string | 是 | 角色虚拟币余额 |
roleCTime | string | 是 | 游戏角色创建时间,秒级时间戳 |