【HarmonyOS NEXT】顶象验证码 SDK 接入实践

一、背景

在鸿蒙开发登录场景中,为拦截恶意登录(如频繁输错密码、机器批量尝试),需接入顶象验证码SDK做前置风控校验:用户完成验证码交互后生成有效token,业务登录接口校验token合法性后,再执行登录逻辑。本文基于该场景,总结HarmonyOS NEXT下第三方SDK(顶象验证码)的接入流程。

二、顶象验证码简介

顶象验证码包含两类核心产品(需根据场景选择):

  1. 智能无感验证:无需用户手动操作,基于设备指纹、行为特征、访问频率等自动校验,正常用户无感知通过,适合高频操作场景;

  2. 滑动/点选验证:用户需完成简单交互(如滑动滑块),适合高风险场景(如频繁输错密码后触发)。 该文章总结"滑动验证"在鸿蒙中的接入,其核心价值是:前端完成交互生成token,后端校验token有效性,阻断机器操作,兼顾安全性与用户体验。

三、开发前准备

总结:AppID+SDK+网络权限

3.1 获取 AppID

流程:注册顶象--->开通无感验证服务--->获取APPID--->接入成功后查看统计数据

官网链接:https://www.dingxiang-inc.com/docs/detail/captcha#doc-h3-13

3.2、SDK下载与引用

备注:此种方法是手动引入

官网里面有提供SDK文件,下载后在项目中新建一个目录进行保存

在需要使用的模块文件中oh-package.json5里面引入顶象SDK

3.3 配置网络权限

顶象验证码需调用网络接口,需在模块级`module.json5`中静态声明权限:

TypeScript 复制代码
    "requestPermissions": [
      {
        "name": 'ohos.permission.INTERNET',
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ],

四、具体实现

示例代码:点击按钮出现验证码弹窗,调用CaptChaview子组件并注册回调即完成初始化

说明:

view.init("")填写申请的APPID

view.startToLoad(...) 方法,是触发验证码加载 / 验证接口请求的入口(返回的 "成功 / 失败" 结果)


核心逻辑:

  1. 点击登录按钮触发验证码弹窗;

  2. 初始化CaptchaView(传入正式AppID);

  3. 完成交互后获取token,传给登录接口;

  4. 后端校验token有效性,通过则执行登录。

完整示例代码:

TypeScript 复制代码
import { CaptchaView, CaptchaViewController, JsonValueType } from 'dx.captcha'
import { HashMap } from '@kit.ArkTS';

@Entry
@Component
struct Index {
  @State buttonText: string = '点击出现顶象验证码'
  private config: HashMap<string, JsonValueType> = new HashMap();
  /**
   * 验证码弹窗
   */
  private captchaDialogController = new CustomDialogController({
    alignment: DialogAlignment.Center,
    customStyle: true,
    builder: this.captchaBuilder
  })

  // 验证码布局
  @Builder
  captchaBuilder() {
    Column() {
      Column() {
        CaptchaView({
          callBack: (view: CaptchaViewController) => {
            view.init("e83bb4b2069d516f9f0798584e0ac2c1")
            view.initConfig(this.config)
            view.startToLoad((event: string, args: JsonValueType) => {
              console.log('lucy== event', event, JSON.stringify(event))
              if (event === "success") {
                if (args instanceof HashMap) {
                  this.buttonText = '验证码验证成功'
                  console.log('lucy== 处理成功的操作')
                }
                this.captchaDialogController.close()
              }
            }, 'success', 'fail')
          }
        })
      }
      .padding({
        left: 10,
        right: 10,
        top: 10,
        bottom: 10
      })
      .backgroundColor(Color.White)
      .borderRadius(10)

      Button()
        .margin({ top: 20 })
        .onClick(() => {
          this.captchaDialogController.close()
        })
        .backgroundImage($r("app.media.login_dialog_captcha_ic_close"))
        .backgroundImagePosition(Alignment.Center)
        .backgroundColor(Color.Transparent)
    }
    .backgroundColor(Color.Transparent)
  }

  build() {
    Column() {
      Button(this.buttonText)
        .onClick(() => {
          this.captchaDialogController.open()
        })
    }
    .width('100%')
    .height('100%')
  }
}
相关推荐
qq_1777673712 小时前
React Native鸿蒙跨平台剧集管理应用实现,包含主应用组件、剧集列表、分类筛选、搜索排序等功能模块
javascript·react native·react.js·交互·harmonyos
qq_1777673712 小时前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
烬头882113 小时前
React Native鸿蒙跨平台采用了函数式组件的形式,通过 props 接收分类数据,使用 TouchableOpacity实现了点击交互效果
javascript·react native·react.js·ecmascript·交互·harmonyos
qq_1777673713 小时前
React Native鸿蒙跨平台通过Animated.Value.interpolate实现滚动距离到动画属性的映射
javascript·react native·react.js·harmonyos
qq_1777673715 小时前
React Native鸿蒙跨平台实现消息列表用于存储所有消息数据,筛选状态用于控制消息筛选结果
javascript·react native·react.js·ecmascript·harmonyos
ujainu15 小时前
Flutter + OpenHarmony 实战:从零开发小游戏(三)——CustomPainter 实现拖尾与相机跟随
flutter·游戏·harmonyos
程序员清洒15 小时前
Flutter for OpenHarmony:Scaffold 与 AppBar — 应用基础结构搭建
flutter·华为·鸿蒙
拉轰小郑郑16 小时前
鸿蒙ArkTS中Object类型与类型断言的理解
华为·harmonyos·arkts·openharmony·object·类型断言
2601_9495936516 小时前
基础入门 React Native 鸿蒙跨平台开发:Animated 动画按钮组件 鸿蒙实战
react native·react.js·harmonyos
菜鸟小芯16 小时前
【开源鸿蒙跨平台开发先锋训练营】DAY8~DAY13 底部选项卡&推荐功能实现
flutter·harmonyos