> >

gt3-harmonyOS-sdk

概述与资源

极验行为验证第三代 HarmonyOS SDK 提供给集成 HarmonyOS 原生客户端开发的开发者使用。

产品简介

条目 说明
产品名称 极验行为验证第三代
开发者信息 武汉极意网络科技有限公司
最新版本号 v4.4.7
最新版本发布时间 2024/9/26
主要功能 由极验开发的新一代人机验证产品,它不基于传统“问题-答案”的检测模式,利用深度学习对验证过程中产生的行为数据进行分析,更加精准地区分人机行为。
SDK隐私政策 极验行为验证第三代-隐私政策
SDK合规指南 极验行为验证第三代-合规指南
资源链接 登录后台获取 SDK
登录后,点击右上角账号>SDK 下载中心>选择对应产品 SDK

环境需求

条目 资源
开发目标 5.0以上
开发环境 DevEco Studio 5.0
编译版本 api12
sdk三方依赖 无

相关资源

条目 资源地址
产品结构流程 通讯流程, 交互流程
错误码列表 Error Code 列表
自定义 API 处理 文档下载

安装

获取SDK

邮件获取

手动导入SDK

将获取的.har文件拖拽到工程中的libs文件夹下。

  1. 在拖入.har到libs文件夹后, 还要检查.har是否被添加到Library,要在项目的


    ```typescript
    "dependencies": {
    "sensebotSdk": "file:./libs/sensebot.har"
    }

  2. 在module.json5文件中添加权限

      "requestPermissions": [
    {
    "name": "ohos.permission.INTERNET",
    "usedScene": {
    "abilities": [
    ...
    ],
    ...
    }
    }
    ],
  3. 混淆规则:
    SDK 的 har 包已做混淆处理,两次混淆会导致不可预期的错误,默认情况下 har 包内包含当前 SDK 的混淆配置

名词解释

  1. api1 & api2: 见数据通信流程图
  2. Bind模式: 以需要触发按钮为参考,将极验逻辑绑定在此按钮上

配置接口

开发者集成客户端sdk前, 必须先在您的服务器上搭建相应的 服务端SDK ,配置 api1及api2 。这里以服务端 api1及api2
配置成功,客户端开发步骤为例,如下以Bind模式,非自定义api1及2为例:

  1. 定义服务端配置好API1&API2

     /**
    * api1,需替换成自己的服务器URL
    */
    private captchaURL: string = "http://www.geetest.com/demo/gt/register-slide";
    /**
    * api2,需替换成自己的服务器URL
    */
    private validateURL: string = "http://www.geetest.com/demo/gt/validate-slide";
  2. 配置初始化接口

    let gt3GeetestUtils = new GT3GeetestUtils(this.getUIContext());
  3. 配置GT3ConfigBean

    // 配置bean文件,也可在oncreate初始化
    gt3ConfigBean = new GT3ConfigBean();
    // 设置验证模式,1:bind
    gt3ConfigBean.setPattern(1);
    // 设置点击灰色区域是否消失,默认不消息
    gt3ConfigBean.setCanceledOnTouchOutside(false);
    // 设置debug模式,开代理可调试
    gt3ConfigBean.setReleaseLog(false);
    // 设置语言,如果为null则使用系统默认语言
    gt3ConfigBean.setLang(null);
    // 设置webview加载超时
    gt3ConfigBean.setTimeout(9000);
    // 设置webview请求超时
    gt3ConfigBean.setWebviewTimeout(6000);
    // 设置回调监听
    gt3ConfigBean.setListener(this.gt3Listener);
    gt3GeetestUtils.init(gt3ConfigBean);
    //私有化配置
    this.gt3ConfigBean.privatizationMode = true
    let gtUrlConfig = new GTURLConfig()
    gtUrlConfig.get = "get.php" //此处只需path,域名通过setUseCustomAPIServers配置
    gtUrlConfig.ajax = "ajax.php" //此处只需path,域名通过setUseCustomAPIServers配置
    gtUrlConfig.staticUrl = "static.geetest.com//app-index.html" //此处配置为中间页地址,无需加协议头,协议头通过setRequestProtocol配置
    this.gt3ConfigBean.setGtUrlConfig = gtUrlConfig
    this.gt3ConfigBean.setGt3ServiceNode(GT3ServiceNode.NODE_CUSTOM)
    this.gt3ConfigBean.setUseCustomAPIServers(["api.geetest.com"]) //此处配置为get\ajax的请求域名,无需加协议头,协议头通过setRequestProtocol配置
  4. 调用验证接口

       // 开启验证

    gt3GeetestUtils.getGeetest();
  5. 回调监听接口实现

     
    gt3Listener: GT3Listener = {
    /**
    * 验证码加载完成
    * @param duration 加载时间和版本等信息,为json格式
    */
    onDialogReady: (duration: string) => {
    console.log("GT3BaseListener-->onDialogReady-->" + duration);
    },
    /**
    * 图形验证结果回调
    * @param code 1为正常 0为失败
    */
    onReceiveCaptchaCode: (code: number) => {
    console.log("GT3BaseListener-->onReceiveCaptchaCode-->" + code);
    },
    /**
    * 验证结果
    * @param result
    */
    onDialogResult: async (result: string) => {
    console.log("GT3BaseListener-->onDialogResult-->" + result);
    // 开启自定义api2逻辑
    let reqApi2 = new RequestAPI(this.riskTypeEnum)
    let api2Result = await reqApi2.requestAPI2(result)
    this.parseApi2Result(api2Result.toString())
    },
    /**
    * 统计信息,参考接入文档
    * @param result
    */
    onStatistics: (result: string) => {
    console.log("GT3BaseListener-->onStatistics-->" + result);
    },
    /**
    * 验证码被关闭
    * @param num 1 点击验证码的关闭按钮来关闭验证码, 2 点击屏幕关闭验证码, 3 点击返回键关闭验证码
    */
    onClosed: (num: number) => {
    console.log("GT3BaseListener-->onClosed-->" + num);
    // this.gt3GeetestUtils.destroy();
    // this.webviewController = new webview.WebviewController
    },
    /**
    * 验证成功回调
    * @param result
    */
    onSuccess: (result: string) => {
    console.log("GT3BaseListener-->onSuccess-->" + result);
    },
    /**
    * 验证失败回调
    * @param errorBean 版本号,错误码,错误描述等信息
    */
    onFailed: (errorBean: GT3ErrorBean) => {
    console.log("GT3BaseListener-->onFailed-->" + errorBean.toString());
    },
    /**
    * 自定义api1回调
    */
    onButtonClick: async () => {
    let reqApi1 = new RequestAPI(this.riskTypeEnum)
    let api1Result = await reqApi1.requestAPI1()
    // TODO 设置返回api1数据,即使为 null 也要设置,SDK内部已处理
    this.gt3ConfigBean.setApi1Json(JSON.parse(api1Result));
    // 继续验证
    this.gt3GeetestUtils.getGeetest();
    }
    }
  6. 其他生命周期

    aboutToDisappear() {
    if (this.gt3GeetestUtils) {
    this.gt3GeetestUtils.destroy();
    }
    }
  7. 统计接口解释 onStatistics

    {
    "gt":"019924a82c70bb123aae90d483087f94", // 商家标识
    "challenge":"340e47b635f855267c222549fa6cab11", // 流水号
    "success":"true", // 是否宕机
    "a1":"1", // api1接口成功, 0为失败,下同
    "t":"1", // gettype接口成功
    "g":"1", // get接口成功
    "a":"1", // ajax
    "r":"1", // 验证码显示成功
    "re":"slide", // 验证类型,若有此字段,表示结果成功
    "os":"harmonyOS",
    "mo":"VKY-AL00",
    "ver":"8.0.0",
    "net":"WIFI",
    "build":"1",
    "release":"1.0",
    "vendor":"com.example.gt3",
    "time":"1531397269605",
    "imei":"unknown",
    "gt3":"4.4.6" // 极验SDK版本
    }

以上为Bind模式,自定义API1和API2,其他模式请详见demo

常见问题

日志打印

SDK提供部分日志,TAG为Geetest。

Q & A

1. 验证码弹出后,验证完成后为什么弹框未消失?

答:需要在onDialogResult回调里面做二次验证结果处理,参考demo

2. 验证码弹出后,遇到横竖屏切换 ?

答:在module.json5里面,添加需要弹出验证码的abilities上配置"orientation": "auto_rotation"

3. 如何获取SDK的版本号?

答:gt3GeetestUtils.getVersion()

6. SDK语言适配如何处理 ?

答:gt3ConfigBean.setLang(null);为使用系统语言。 若不为null,如:”zh”–简体中文,”zh-HK”,”zh-TW”-繁体中文,”en”–英文,”id”
–印尼语,”ja”–日文。

常见错误码

ErrorCode Description 备注
200 服务被forbidden
201 SKD内部异常 请联系我们
202 解析json错误 请查看日志
204 验证码加载超时,默认15s
204_1 webview加载错误 请查看日志
204_2 SSLError,开启代理失败或者时间问题 若开启代理,请设置debug为true
205 api1错误 请查看日志
207 get错误 请查看日志
208 ajax错误 请查看日志
209 api2错误 请查看日志

极验会继续努力,给予您更好的服务