Android 接入
更新时间:2026-10-09
Android 接入
1. 接入流程
- 开通验证码服务后,在控制台添加验证场景,获取该场景分配的业务
ak(AccessKey); - 在 Android 客户端 集成验证码 SDK;
- 页面中调用验证码 SDK,将 验证通过返回的参数值传到 App 业务端;
- App 业务端把相关参数传入验证码服务端进行验签。
2. 接入方式
Android 端支持两种接入方式,请根据业务形态选择:
| 接入方式 | 说明 | 适用场景 | 参考文档 |
|---|---|---|---|
| ①WebView 引入 H5 页面 | 在 App 内通过 WebView 加载验证码 H5 页面,通过 JS 桥接获取验证结果 | 已有 WebView 业务页面、希望复用 H5 接入逻辑、对包体积敏感 | 见《Web/H5 接入》 |
| ②Android 原生客户端集成 | 集成验证码 Android SDK(AAR),通过原生控件 YMGCaptchaDialog 拉起验证 | 原生 App、需要原生交互体验 | 见本文档以下内容 |
- 两种方式的验证结果(svcp_stk)与服务端验签流程完全一致,均参见《服务端接入》。
3. SDK方案说明
验证码 Android SDK 本质上是对 H5 验证码能力的原生封装,在保留 Web 端安全对抗能力的同时,提供原生调用体验。
- 通过 WebView 承载验证页面,监听并拦截验证成功的回调,完成与 H5 验证逻辑的双向通信;
- 技术选型,Kotlin + WebView + Dialog;
- 以 AAR 包形式交付,支持滑块、数字点选、文字点选、轨迹绘制等多种验证形态;
- 验证逻辑与对抗策略基于 SaaS 架构在云端统一维护、自动更新。
4. SDK集成方式
- 1.添加SDK依赖
将产物 YMGBehaviorVerify-release-xxx.aar 放到模块目录下(如 libs),在项目的 app/build.gradle 中的 dependencies 节点下添加 SDK 依赖:
Plain Text
1implementation(files("libs/YMGBehaviorVerify.aar"))
- 2.配置权限
在宿主项目的 AndroidManifest.xml 中添加网络权限:
XML
1<uses-permission android:name="android.permission.INTERNET" />
2<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 3.混淆配置(如开启混淆)
在宿主项目的 proguard-rules.pro 中添加:
Plain Text
1-keep class com.baidu.antibot.ymgbehaviorverify.** { *; }
5. SDK控件接口说明
Kotlin
1/**验证码 Dialog 实现
2 * @param context Android context
3 * @param handleCaptchaToken 验证成功后,验证码通过令牌 svcp_stk 参数的处理回调函数
4 * @param ak 验证码业务 ak
5 * @param ext 业务希望绑定的额外参数,不需要可以不传
6 */
7class YMGCaptchaDialog(
8 context: Context,
9 handleCaptchaToken: (String) -> Unit,
10 ak: String,
11 ext: String = ""
12): Dialog(context)
6. SDK集成代码参考
Kotlin
1// 初始化控件
2val ctx = this
3val buttonSubmit = findViewById<Button>(R.id.button_submit)
4val textToken = findViewById<TextView>(R.id.text_token)
5
6// 初始化验证码 Dialog
7val ak = "*************************" // 从控制台获取
8val handleCaptchaToken = { stoken: String ->
9 textToken.text = stoken
10}
11val captchaDialog = YMGCaptchaDialog(ctx, handleCaptchaToken, ak)
12captchaDialog.setOnCancelListener { _ ->
13 println("[ Captcha ] Dialog Cancel. " + Date())
14}
15captchaDialog.setOnDismissListener { _ ->
16 println("[ Captcha ] Dialog Dismiss. " + Date())
17}
18
19// 注册提交按钮回调
20buttonSubmit.setOnClickListener {
21 captchaDialog.show()
22}
7. SDK调用示例
Kotlin
1import com.baidu.antibot.ymgbehaviorverify.YMGCaptchaDialog
2
3// 初始化验证码 Dialog
4val ak = "你的业务AK" // 替换为实际申请的 AK
5val handleCaptchaToken = { stoken: String ->
6 // 验证成功回调,将 stoken 发送到服务端进行二次校验
7 Log.d("Captcha", "token = $stoken")
8}
9val captchaDialog = YMGCaptchaDialog(this, handleCaptchaToken, ak)
10
11// 设置取消和关闭监听(可选)
12captchaDialog.setOnCancelListener {
13 Log.d("Captcha", "用户取消验证")
14}
15captchaDialog.setOnDismissListener {
16 Log.d("Captcha", "验证码弹窗关闭")
17}
18
19// 触发验证码
20captchaDialog.show()
8. Token 与服务端验签
- 验证成功后,
handleCaptchaToken回调返回验证码令牌svcp_stk; - 业务客户端将
svcp_stk提交至业务服务端(传输方式由业务自定义,如请求体字段); - 业务服务端调用验证码平台
/v1/webapi/verint/verifystk接口完成二次校验,具体加解密流程与请求/响应格式见《服务端接入》; - 仅当服务端验签返回
pass == true时,才允许放行业务流程(注册、登录、领券等)。
安全提示:客户端回调结果不可作为最终放行依据,必须以服务端验签结果为准。
评价此篇文章
