Kauth网络验证系统Kauth网络验证系统
首页
HTTP API文档
作者|代理后台
首页
HTTP API文档
作者|代理后台
  • Kaut介绍

    • 验证系统
    • 相关知识
    • 防破要诀
  • 网络验证

    • 数据安全
    • 心跳守护
    • 对接说明
    • C语言接口
  • 对接文档

    • HTTP对接
    • 懒人对接
    • AutoJs对接
    • EasyClick对接
    • Java对接
    • Python对接
    • 按键精灵

Java对接

本文档介绍如何在 Java 环境中使用 Kauth SDK 实现网络验证功能。

1. 准备工作

1.1 下载 SDK

重要提示 首先下载SDK文件: 网盘下载

将下载的 SDK JAR 包添加到项目中。

1.2 Maven 依赖

在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.11</version>
</dependency>

1.3 获取必要的参数

在使用 SDK 之前,你需要从 Kauth 管理后台获取以下信息:

  • API 域名(apiDomain):验证服务器地址,默认为 https://kauth.cn,独立部署版本需要设置为你的域名
  • 程序ID(programId):登录后在"程序管理->程序列表"中查看
  • 程序密钥(programSecret):登录后在"程序管理->程序列表"中查看
  • 商户公钥(merchantPublicKey):登录后在"系统配置"中查看
  • 签名类型(signType):支持 SIGN_TYPE_RSA 或 SIGN_TYPE_HMAC_SHA256

2. 初始化 SDK

2.1 配置服务参数

初始化 SDK 配置:

import cn.kauth.sdk.IKauthService;
import cn.kauth.sdk.IKAppService;
import cn.kauth.sdk.enums.KauthSignEnums;
import cn.kauth.sdk.impl.KauthServiceImpl;
import cn.kauth.sdk.info.config.ServiceConfig;

// 创建服务实例
IKauthService kauthService = new KauthServiceImpl();

// 配置服务参数
ServiceConfig serviceConfig = new ServiceConfig();
serviceConfig.setApiDomain("https://kauth.cn"); // 如果独立部署,设置为你的域名
serviceConfig.setMerchantPublicKey("你的商户公钥");
serviceConfig.setProgramSecret("你的程序密钥");
serviceConfig.setProgramId(你的程序ID);
serviceConfig.setKauthSignEnums(KauthSignEnums.SIGN_TYPE_RSA); // 或 SIGN_TYPE_HMAC_SHA256

kauthService.setServiceConfig(serviceConfig);

2.2 获取设备ID

SDK 提供了 DeviceTools.getDeviceId() 方法来获取设备ID:

import cn.kauth.sdk.tools.DeviceTools;

String deviceId = DeviceTools.getDeviceId();

3. 登录功能

3.1 密码登录

使用用户名和密码进行登录:

import cn.kauth.sdk.info.req.PwdLoginRequest;
import cn.kauth.sdk.info.resp.ApiResult;
import cn.kauth.sdk.info.resp.LoginResponse;

PwdLoginRequest pwdLoginRequest = new PwdLoginRequest();
pwdLoginRequest.setLoginName("用户名");
pwdLoginRequest.setPassword("密码");
pwdLoginRequest.setDeviceId(DeviceTools.getDeviceId());
pwdLoginRequest.setCaptchaCode("");
pwdLoginRequest.setCaptchaUuid("");

ApiResult<LoginResponse> apiResult = kauthService.pwdLogin(pwdLoginRequest);
if (apiResult.isSuccess()) {
    // 登录成功
    String token = apiResult.getData().getToken();
    // 使用 token 获取应用服务
    IKAppService kAppService = kauthService.getKAppService(token);
}

3.2 卡密登录

使用卡密进行登录:

import cn.kauth.sdk.info.req.KaLoginRequest;

KaLoginRequest kaLoginRequest = new KaLoginRequest();
kaLoginRequest.setKaPwd("卡密");
kaLoginRequest.setDeviceId(DeviceTools.getDeviceId());
kaLoginRequest.setPlatformType("windows"); // 平台类型
kaLoginRequest.setCaptchaCode("");
kaLoginRequest.setCaptchaUuid("");

ApiResult<LoginResponse> loginResponse = kauthService.kaLogin(kaLoginRequest);
if (loginResponse.isSuccess()) {
    String token = loginResponse.getData().getToken();
    IKAppService kAppService = kauthService.getKAppService(token);
}

3.2.1 次卡登录

次卡按次数扣费的卡密登录:

KaLoginRequest kaLoginRequest = new KaLoginRequest();
kaLoginRequest.setKaPwd("次卡卡密");
kaLoginRequest.setDeviceId(DeviceTools.getDeviceId());
kaLoginRequest.setPlatformType("windows");
kaLoginRequest.setCaptchaCode("");
kaLoginRequest.setCaptchaUuid("");

ApiResult<LoginResponse> result = kauthService.kaLogin(kaLoginRequest);

3.2.2 时卡登录

时卡按时长使用的卡密登录:

KaLoginRequest kaLoginRequest = new KaLoginRequest();
kaLoginRequest.setKaPwd("时卡卡密");
kaLoginRequest.setDeviceId(DeviceTools.getDeviceId());
kaLoginRequest.setPlatformType("windows");
kaLoginRequest.setCaptchaCode("");
kaLoginRequest.setCaptchaUuid("");

ApiResult<LoginResponse> result = kauthService.kaLogin(kaLoginRequest);

3.3 试用登录

使用试用功能登录:

import cn.kauth.sdk.info.req.TrialLoginReq;

TrialLoginReq trialLoginReq = new TrialLoginReq();
trialLoginReq.setDeviceId(DeviceTools.getDeviceId());

ApiResult<LoginResponse> trialResult = kauthService.trialLogin(trialLoginReq);
if (trialResult.isSuccess()) {
    String token = trialResult.getData().getToken();
    IKAppService kAppService = kauthService.getKAppService(token);
}

3.4 获取验证码

获取登录验证码(可选):

import cn.kauth.sdk.info.req.CaptchaRequest;
import cn.kauth.sdk.info.resp.CaptchaResponse;
import java.util.UUID;

CaptchaRequest captchaRequest = new CaptchaRequest();
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
captchaRequest.setUuid(uuid);

ApiResult<CaptchaResponse> captcha = kauthService.getCaptcha(captchaRequest);
if (captcha.isSuccess()) {
    String captchaBase64 = captcha.getData().getCaptchaBase64();
    // 需要自己把base64图片转为字节输出到本地才能看到图片
    // 或者使用在线的base64图片查看器
}

4. 获取登录后的服务

登录成功后,使用返回的 token 获取应用服务:

// 登录后获取 token
ApiResult<LoginResponse> loginResult = kauthService.kaLogin(kaLoginRequest);
String token = loginResult.getData().getToken();

// 获取应用服务
IKAppService kAppService = kauthService.getKAppService(token);

// 之后可以使用 kAppService 调用登录后的接口

5. 用户信息管理

5.1 获取用户信息

获取当前登录用户的详细信息:

import cn.kauth.sdk.info.resp.UserInfo;

ApiResult<UserInfo> userInfo = kAppService.userInfo();
if (userInfo.isSuccess()) {
    UserInfo user = userInfo.getData();
    System.out.println("用户ID: " + user.getUserId());
    System.out.println("服务类型: " + user.getServerType()); // time(时长) 或 ci(次数)
    System.out.println("到期时间: " + user.getServerExpireTime());
    System.out.println("剩余次数: " + user.getServerRemainNum());
    System.out.println("是否试用: " + user.isTrial());
}

5.2 退出登录

退出当前登录状态:

ApiResult<Void> loginOut = kAppService.loginOut();
if (loginOut.isSuccess()) {
    System.out.println("退出登录成功");
}

6. 程序信息

6.1 获取程序详情

获取程序的详细信息(无需登录):

import cn.kauth.sdk.info.resp.ProgramDetailResponse;

ApiResult<ProgramDetailResponse> programDetail = kauthService.getProgramDetail();
if (programDetail.isSuccess()) {
    ProgramDetailResponse detail = programDetail.getData();
    System.out.println("程序名称: " + detail.getName());
    System.out.println("程序状态: " + detail.isStatus());
    System.out.println("是否强制更新: " + detail.isForceUpdateDict());
    System.out.println("是否允许注册: " + detail.isEnableRegisterDict());
    System.out.println("程序公告: " + detail.getNotice());
    // 当前版本信息
    System.out.println("版本号: " + detail.getCurrentVersion().getVersionNo());
    System.out.println("版本名称: " + detail.getCurrentVersion().getVersionName());
}

6.2 获取服务器时间

获取服务器当前时间:

import cn.kauth.sdk.info.resp.ServerTimeResp;

ApiResult<ServerTimeResp> serverTime = kAppService.getServerTime();
if (serverTime.isSuccess()) {
    ServerTimeResp time = serverTime.getData();
    System.out.println("服务器时间字符串: " + time.getServerTimeStr());
    System.out.println("服务器时间毫秒: " + time.getServerTimeMill());
    System.out.println("服务器时间秒: " + time.getServerTimeSec());
}

7. 用户管理

7.1 用户注册

注册新用户:

import cn.kauth.sdk.info.req.RegisterRequest;
import cn.kauth.sdk.info.resp.RegisterResponse;

RegisterRequest registerRequest = new RegisterRequest();
registerRequest.setLoginName("用户名");
registerRequest.setPassword("密码");
registerRequest.setKaPassword("注册卡密"); // 可选
registerRequest.setNickName("昵称");
registerRequest.setDeviceId(DeviceTools.getDeviceId());
registerRequest.setCaptchaCode("");
registerRequest.setCaptchaUuid("");

ApiResult<RegisterResponse> register = kauthService.register(registerRequest);

7.2 修改密码

修改用户密码:

import cn.kauth.sdk.info.req.ResetPwdRequest;

ResetPwdRequest resetPwdRequest = new ResetPwdRequest();
resetPwdRequest.setLoginName("用户名");
resetPwdRequest.setOldPassword("旧密码");
resetPwdRequest.setNewPassword("新密码");
resetPwdRequest.setConfirmPassword("确认新密码");
resetPwdRequest.setCaptchaCode("");
resetPwdRequest.setCaptchaUuid("");

ApiResult<Void> result = kauthService.changePassword(resetPwdRequest);

7.3 账号充值

使用卡密为账号充值:

import cn.kauth.sdk.info.req.RechargeRequest;

RechargeRequest rechargeRequest = new RechargeRequest();
rechargeRequest.setLoginName("用户名");
rechargeRequest.setKaPassword("充值卡密");
rechargeRequest.setDeviceId(DeviceTools.getDeviceId());
rechargeRequest.setCaptchaUuid("");
rechargeRequest.setCaptchaCode("");

ApiResult<Void> result = kauthService.recharge(rechargeRequest);

7.4 以卡充卡

使用卡密A为卡密B充值:

import cn.kauth.sdk.info.req.KaRechargeKaReq;

KaRechargeKaReq kaRechargeKaReq = new KaRechargeKaReq();
kaRechargeKaReq.setCardPwd("卡密A");
kaRechargeKaReq.setRechargeCardPwd("卡密B");

ApiResult<Void> result = kauthService.rechargeKa(kaRechargeKaReq);

8. 设备管理

8.1 解绑设备(登录前)

在未登录状态下解绑设备:

import cn.kauth.sdk.info.req.UnbindDeviceRequest;

UnbindDeviceRequest unbindDeviceRequest = new UnbindDeviceRequest();
unbindDeviceRequest.setLoginName("用户名");
unbindDeviceRequest.setPassword("密码");
unbindDeviceRequest.setDeviceId(DeviceTools.getDeviceId());
unbindDeviceRequest.setCaptchaCode("");
unbindDeviceRequest.setCaptchaUuid("");

ApiResult<Void> result = kauthService.unbindDevice(unbindDeviceRequest);

8.2 解绑设备(登录后)

登录后解绑当前设备:

// 卡密只允许绑定一个设备,如果已绑定其他设备,则需要解绑其他设备后才能绑定当前设备
ApiResult<Void> result = kAppService.unbindDevice();

9. 自定义配置

9.1 用户配置

更新用户自定义配置:

import cn.kauth.sdk.info.req.UpdateCustomConfigReq;
import cn.kauth.sdk.info.resp.GetCustomConfigResp;
import java.util.HashMap;
import java.util.Map;

// 更新用户配置
UpdateCustomConfigReq updateUserConfigReq = new UpdateCustomConfigReq();
Map<String, String> config = new HashMap<>();
config.put("name", "张三");
config.put("age", "18");
config.put("uuid", UUID.randomUUID().toString());
updateUserConfigReq.setConfig(new Gson().toJson(config));

ApiResult<Void> updateResult = kAppService.updateUserConfig(updateUserConfigReq);

// 获取用户配置
ApiResult<GetCustomConfigResp> getUserConfig = kAppService.getUserConfig();
if (getUserConfig.isSuccess()) {
    String config = getUserConfig.getData().getConfig();
    System.out.println("用户配置: " + config);
}

9.2 卡密配置

更新卡密自定义配置:

// 更新卡密配置
UpdateCustomConfigReq updateKaConfigReq = new UpdateCustomConfigReq();
Map<String, String> config = new HashMap<>();
config.put("name", "李四");
config.put("age", "21");
updateKaConfigReq.setConfig(new Gson().toJson(config));

ApiResult<Void> updateResult = kAppService.updateKaConfig(updateKaConfigReq);

// 获取卡密配置
ApiResult<GetCustomConfigResp> getKaConfig = kAppService.getKaConfig();
if (getKaConfig.isSuccess()) {
    String config = getKaConfig.getData().getConfig();
    System.out.println("卡密配置: " + config);
}

10. 远程数据管理

10.1 添加远程数据

import cn.kauth.sdk.info.req.RemoteDataAddReq;

RemoteDataAddReq addReq = new RemoteDataAddReq();
addReq.setKey("data_test_1");
addReq.setValue("data_1_value");

ApiResult<Void> result = kAppService.addRemoteData(addReq);

10.2 获取远程数据

import cn.kauth.sdk.info.req.GetRemoteVarReq;
import cn.kauth.sdk.info.resp.RemoteNormalVarResp;

GetRemoteVarReq getReq = new GetRemoteVarReq();
getReq.setKey("data_test_1");

ApiResult<RemoteNormalVarResp> result = kAppService.getRemoteData(getReq);
if (result.isSuccess()) {
    System.out.println("远程数据值: " + result.getData().getValue());
}

10.3 更新远程数据

import cn.kauth.sdk.info.req.RemoteDataUpdateReq;

RemoteDataUpdateReq updateReq = new RemoteDataUpdateReq();
updateReq.setKey("data_test_1");
updateReq.setValue("data_1_value_updated");

ApiResult<Void> result = kAppService.updateRemoteData(updateReq);

10.4 删除远程数据

import cn.kauth.sdk.info.req.RemoteDataDeleteReq;

RemoteDataDeleteReq deleteReq = new RemoteDataDeleteReq();
deleteReq.setKey("data_test_1");

ApiResult<Void> result = kAppService.deleteRemoteData(deleteReq);

11. 远程变量

获取远程变量(无需登录):

GetRemoteVarReq getRemoteVarReq = new GetRemoteVarReq();
getRemoteVarReq.setKey("var_1");

ApiResult<RemoteNormalVarResp> result = kAppService.getRemoteVar(getRemoteVarReq);
if (result.isSuccess()) {
    System.out.println("远程变量值: " + result.getData().getValue());
}

12. 远程函数

调用远程函数:

import cn.kauth.sdk.info.req.CallFunctionReq;
import cn.kauth.sdk.info.resp.CallFunctionResp;
import java.util.Arrays;
import java.util.List;

CallFunctionReq req = new CallFunctionReq();
req.setFunctionName("test_function");

// 设置函数参数
List<CallFunctionReq.CallFunctionParamsReq> params = Arrays.asList(
    new CallFunctionReq.CallFunctionParamsReq("a", "11"),
    new CallFunctionReq.CallFunctionParamsReq("b", "22")
);
req.setFunctionParams(params);

ApiResult<CallFunctionResp> result = kAppService.callFunction(req);
if (result.isSuccess()) {
    System.out.println("函数执行结果: " + result.getData().getResult());
}

13. 脚本更新

13.1 获取最新脚本信息

import cn.kauth.sdk.info.req.GetNewestScriptReq;
import cn.kauth.sdk.info.resp.GetNewestScriptResp;

GetNewestScriptReq req = new GetNewestScriptReq();
req.setScriptName("script_1");

ApiResult<GetNewestScriptResp> newestScript = kAppService.getNewestScript(req);
if (newestScript.isSuccess()) {
    GetNewestScriptResp script = newestScript.getData();
    System.out.println("脚本名称: " + script.getScriptName());
    System.out.println("版本号: " + script.getVersionNumber());
    System.out.println("版本描述: " + script.getVersionDescription());
    System.out.println("脚本类型: " + script.getScriptType());
    System.out.println("发布时间: " + script.getScriptReleaseTime());
}

13.2 获取脚本下载地址

import cn.kauth.sdk.info.req.ScriptDownloadReq;
import cn.kauth.sdk.info.resp.RemoteScriptDownloadResp;

ScriptDownloadReq req = new ScriptDownloadReq();
req.setScriptName("script_1");
req.setVersionNumber("1.0.2");

ApiResult<RemoteScriptDownloadResp> result = kAppService.getScriptDownload(req);
if (result.isSuccess()) {
    String downloadUrl = result.getData().getDownloadUrl();
    System.out.println("脚本下载地址: " + downloadUrl);
    // 使用下载地址下载脚本内容
}

14. 完整示例

import cn.kauth.sdk.IKauthService;
import cn.kauth.sdk.IKAppService;
import cn.kauth.sdk.enums.KauthSignEnums;
import cn.kauth.sdk.impl.KauthServiceImpl;
import cn.kauth.sdk.info.config.ServiceConfig;
import cn.kauth.sdk.info.req.*;
import cn.kauth.sdk.info.resp.*;
import cn.kauth.sdk.tools.DeviceTools;
import com.google.gson.Gson;

public class KauthExample {
    
    private static IKauthService kauthService;
    private static final Gson gson = new Gson();
    
    public static void main(String[] args) {
        // 1. 初始化 SDK
        kauthService = new KauthServiceImpl();
        ServiceConfig serviceConfig = new ServiceConfig();
        serviceConfig.setApiDomain("https://kauth.cn");
        serviceConfig.setMerchantPublicKey("你的商户公钥");
        serviceConfig.setProgramSecret("你的程序密钥");
        serviceConfig.setProgramId(你的程序ID);
        serviceConfig.setKauthSignEnums(KauthSignEnums.SIGN_TYPE_RSA);
        kauthService.setServiceConfig(serviceConfig);
        
        // 2. 卡密登录
        KaLoginRequest kaLoginRequest = new KaLoginRequest();
        kaLoginRequest.setKaPwd("你的卡密");
        kaLoginRequest.setDeviceId(DeviceTools.getDeviceId());
        kaLoginRequest.setPlatformType("windows");
        kaLoginRequest.setCaptchaCode("");
        kaLoginRequest.setCaptchaUuid("");
        
        ApiResult<LoginResponse> loginResult = kauthService.kaLogin(kaLoginRequest);
        if (loginResult.isSuccess()) {
            System.out.println("登录成功!");
            
            // 3. 获取应用服务
            String token = loginResult.getData().getToken();
            IKAppService kAppService = kauthService.getKAppService(token);
            
            // 4. 获取用户信息
            ApiResult<UserInfo> userInfo = kAppService.userInfo();
            if (userInfo.isSuccess()) {
                UserInfo user = userInfo.getData();
                System.out.println("用户ID: " + user.getUserId());
                System.out.println("服务类型: " + user.getServerType());
                System.out.println("剩余次数: " + user.getServerRemainNum());
            }
            
            // 5. 使用远程数据
            RemoteDataAddReq addReq = new RemoteDataAddReq();
            addReq.setKey("my_data");
            addReq.setValue("Hello World");
            kAppService.addRemoteData(addReq);
            
            GetRemoteVarReq getReq = new GetRemoteVarReq();
            getReq.setKey("my_data");
            ApiResult<RemoteNormalVarResp> data = kAppService.getRemoteData(getReq);
            if (data.isSuccess()) {
                System.out.println("远程数据: " + data.getData().getValue());
            }
            
            // 6. 退出登录
            kAppService.loginOut();
        } else {
            System.out.println("登录失败: " + loginResult.getMsg());
        }
    }
}

15. 注意事项

  1. SDK 下载:SDK 下载请登录后台管理系统,在系统首页进行下载。

  2. 需要登录的功能:登录后的功能需要通过 IKAppService 调用,该实例通过 kauthService.getKAppService(token) 获取。

  3. 设备ID:使用 DeviceTools.getDeviceId() 获取设备ID,该方法会自动生成一个设备标识。

  4. 配置存储:卡密配置和用户配置是分别独立的存储空间。

  5. 远程功能:远程函数和远程数据需要登录后才能使用。

  6. 脚本更新:脚本更新功能可以用于实现脚本在线更新。

  7. 验证码:验证码为可选功能,用于增强安全性。

  8. 并发登录:通过测试代码可以看到 SDK 支持并发登录处理。

  9. 设备绑定:卡密只允许绑定一个设备,如果已绑定其他设备,需要先解绑。

  10. 心跳机制:建议定时调用 userInfo() 接口来保持登录状态。

16. 错误处理

所有 API 调用都会返回 ApiResult<T> 对象:

public class ApiResult<T> {
    private Integer code;      // 状态码,200表示成功
    private String msg;        // 提示信息
    private Boolean success;  // 是否成功
    private T data;           // 响应数据
}

// 使用示例
ApiResult<LoginResponse> result = kauthService.kaLogin(request);
if (result.isSuccess()) {
    // 操作成功
    LoginResponse loginResponse = result.getData();
} else {
    // 操作失败
    System.err.println("失败: " + result.getMsg());
}

17. 更多信息

  • 更多 API 接口说明请参考 API 文档
  • 如有问题,请联系技术支持:admin@verifyhub.cn 或 QQ: 5027954
最近更新:: 2025/12/4 12:54
Contributors: SongLongKuan
Prev
EasyClick对接
Next
Python对接