# 登录接口(必接)

# 1、接口说明

此接口为 SDK 统一登录接口。国内和海外登录均使用此接口,具体使用方式则根据meta-data配置(由开放平台出包,接入者无需关心此配置)。

WARNING

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

# 2、登录接口

# 2.1、拉起登录(必接)

调用代码示例如下:

import com.dh.DHSDKHelper;

/**
 * @param activity    上下文
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().getPlatform().login(activity, gameUnifiedCallback);

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback implements IDHSDKCallback {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            case DHSDKConst.REQ_LOGIN:
                // 登录回调
                if (resultCode == DHSDKConst.RET_OK) {
                    // 登录成功
                    // 数据解析:resultData
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 登录失败
                    // 异常描述:resultData
                }
                break;
            default:
                // 其他结果
                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 int 是 是 账号 ID,唯一标识
accountView String 是 是 账号缩略,用于界面显示,例如顶部登录欢迎弹窗
sign String 是 是 登录签名,参考服务器文档
token String 是 是 登录令牌,参考服务器文档
region int 是 是 所属地区,1:中国大陆;0:港澳台及海外
loginType int 是 是 登录类型:当值为 10 时即游客类型,需要调用账号绑定接口。其他类型接入方无需处理,直接传送给服务器
userExtraInfo JsonObject 是 是 用户额外信息,接入方一般无需关注
loginTimestamp int 是 是 登录时间,秒级时间戳,参考服务器文档
expireTimestamp int 是 是 登录失效时间,秒级时间戳,参考服务器文档

操作危险

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

WARNING

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

# 2.2、账号绑定(海外必接、国内不接)

TIP

国内不接入,海外必接,同时请勿在游戏启动时,调用账号绑定接口。

注意

  • 登录接口返回的账号类型loginType等于10时,代表该账号是游客账号。游戏可根据需要调用此接口进行账号绑定,以防止游客账号丢失。
  • 请勿在 SDK 登录过程中调用此接口。该接口应在用户已登录状态下,由游戏方在登录界面中显示绑定账号按钮,当用户主动点击该按钮时,才可调用此接口。

# 2.2.1 弹出绑定界面

TIP

该接口适用于游戏对绑定界面没有 UI 要求的情况。

调用代码示例如下:

import com.dh.DHSDKHelper;

/**
 * @param activity    上下文
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().getPlatform().link(activity, gameUnifiedCallback);

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback implements IDHSDKCallback {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            case DHSDKConst.REQ_LINK:
                // 绑定回调
                if (resultCode == DHSDKConst.RET_OK) {
                    // 绑定成功
                    // 数据解析:resultData
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 绑定失败
                    // 异常描述:resultData
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
}

绑定成功,回调数据说明如下:

绑定回调数据结构与登录回调数据结构相同,请参考拉起登录接口。

# 2.3、退出登录(必接)

WARNING

注意该接口为退出登录,指的是退出账号登录,并非注销账号或退出游戏。某些渠道没有退出登录功能,调用此接口将直接回调退出成功的回调。

调用代码示例如下:

import com.dh.DHSDKHelper;

/**
 * @param activity    上下文
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().getPlatform().logout(activity, gameUnifiedCallback);

DANGER

接入方的退出登录回调监听必须为全局回调,当游戏收到退出成功回调时(requestCode = DHSDKConst.REQ_LOGIN_OUT),需要返回到登录界面。接入方必须清理缓存的登录状态,进入游戏前须判断是否已登录,否则会导致串号串服等问题!

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback implements IDHSDKCallback {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            case DHSDKConst.REQ_LOGIN_OUT:
                // 登出回调
                if (resultCode == DHSDKConst.RET_OK) {
                    // 登出成功
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 登出失败
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
}

绑定结果,回调数据说明如下:

回调数据为文本提示或其他结构,接入方无需解析

# 2.4、账号切换(必接)

DANGER

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

# 2.5、上报角色(必接)

DANGER

上报角色数据:在创角、登录、退出、升级时需要调用。请注意,需在触发动作成功后进行上报。

调用代码示例如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String gameUserInfo = "{}";
try {
    gameUserInfo = new JSONObject()
        .put("areaId", 100)                  // 大区ID
        .put("areaName", "国服一区")          // 大区名称
        .put("roleId", "100002")             // 角色ID
        .put("roleName", "kraity")           // 角色名称
        .put("roleLevel", 143)               // 角色等级
        .put("roleVipLevel", 0)              // VIP等级
        .put("roleType", "法师")              // 角色职业
        .put("rolePower", 10000)             // 角色战力值
        .put("partyId", 0)                   // 角色公会ID
        .put("partyName", "无")              // 角色公会名称
        .put("roleBalance", 0)               // 角色虚拟币余额
        .put("roleCreateTime", 1719763200)   // 游戏角色创建时间
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity     上下文
 * @param type         上报类型
 * @param gameUserInfo 角色数据
 */
DHSDKHelper.getInstance().getPlatform().setGameUserInfo(activity, type, gameUserInfo);

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

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

WARNING

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

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

参数 类型 必传字段 统一字段 说明
areaId int 是 是 大区 ID
areaName String 是 是 大区名称
roleId String 是 是 角色 ID
roleName String 是 是 角色名称
roleLevel int 否 是 角色等级,城堡等级、钻石等级等
roleVipLevel int 否 是 VIP 等级
roleType String 否 是 角色职业
rolePower int 否 是 角色战力值
partyId int 否 是 角色公会 ID
partyName String 否 是 角色公会名称
roleBalance int 否 是 角色虚拟币余额
roleCreateTime int 是 是 游戏角色创建时间,秒级时间戳

# 2.6、退出游戏(国内必接、海外不接)

调用代码示例:

import com.dh.DHSDKHelper;

/**
 * @param activity    上下文
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().exit(activity, gameUnifiedCallback);

DANGER

  • 应用需完全退出时调用,且只有在回调结果为DHSDKConst.RET_OK时才能关闭程序,否则会导致 SDK 异常、内存泄漏等问题。
  • 该方法用于释放变量引用。此外,通常情况下渠道会显示关闭确认对话框,需要用户确认后才能关闭程序。因此,不用担心一直返回DHSDKConst.RET_FAIL而无法关闭程序。

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback implements IDHSDKCallback {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            case DHSDKConst.REQ_EXIT:
                // 退出回调
                if (resultCode == DHSDKConst.RET_OK) {
                    // 许可退出游戏
                    // 游戏清理资源

                    // 最后杀死进程
                    android.os.Process.killProcess(
                        android.os.Process.myPid()
                    );
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
}

退出结果,回调数据说明如下:

回调数据为文本提示或其他结构,接入方无需解析

# 2.7、检验服务器(初心渠道必接)

调用代码示例:

import com.dh.DHSDKHelper;
import com.dh.callback.IDHSDKCallback;
import com.dh.framework.utils.DHPluginParam;

String params = "{}";
try {
    params = new JSONObject()
        .put("pluginName", "chuxin")              // 固定
        .put("pluginType", "platform")           // 固定
        .put("methodName", "checkServer")     // 固定
        .put("methodParam", new JSONObject()
            .put("areaId", "XXX") //传入具体的大区id,字符串类型
            .toString())
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity    上下文
 * @param param       接口参数
 * @param sdkCallback 回调对象
 */
DHSDKHelper.getInstance().exec(activity, params, gameUnifiedCallback);

DANGER

点击开始游戏或者进服按钮时调用,如果校验服务器回调返回失败,不允许玩家进服,只有返回成功回调才可以进服。

回调对象示例如下:

import com.dh.DHSDKConst;
import com.dh.callback.IDHSDKCallback;

public class GameUnifiedCallback implements IDHSDKCallback {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            case 135:
                // 检验服务器回调
                if (resultCode == DHSDKConst.RET_OK) {
                    //可以进入游戏
                }else{
                    //不允许进入游戏
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
}
Last Updated: 2026/7/3 17:51:10