android 验证码 sdk,Android SDK API

本文介绍Android SDK API调用的详情。

安全组件实例化函数

import com.alibaba.wireless.security.jaq.SecurityInit

public static int Initialize(Context context) throws JAQException

初始化负责完成整个聚安全安全组件的全局初始化。初始化是线程安全的,初始化调用只需要进行一次,无需重复调用。

入参

context:任意Activity、Service等Coxtext类非空实例

返回

0:初始化成功

1:初始化失败

异常错误诊断

出现异常时,会抛出JAQException异常。可以根据JAQException实例的getErrorCode()方法获取错误码。

错误码

含义

SEC_ERROR_INIT_CONTEXT_ISNULL

101

参数不正确,请检查输入的参数。

SEC_ERROR_INIT_SO_CHECK_ERROR

102

libsecurityguard***.so文件和安全组件的.jar包不匹配。请检验是否存在libsecurityguard***.so文件被破坏或修改的情况。

SEC_ERROR_INIT_LOADSO_FAIL

103

libsecurityguard***.so文件装载问题,通常不会发生。如果发生此问题,可以先卸载APK,再重新安装。

SEC_ERROR_INIT_NO_RSA_FILE_ERROR

104

APK中没有正常的RSA签名文件。请检验签名过程。

SEC_ERROR_INIT_PUBLICKKEY_FIND_ERROR

105

RSA文件不正常,无法正常解析出公钥。

SEC_ERROR_INIT_SO_NOT_EXIST

106

在APK中找不到对应aebi的libsecurityguard***.so文件,请检查是否正常打包了安全组件SDK提供的.so文件。

说明 不同版本的.so文件不通用,请不要拿其他版本的替换。

SEC_ERROR_INIT_UNKNOWN_ERROR

199

未知错误,请重试。

获取数据风控wtoken

public String doJAQVerfificationSync (HashMap info,

int timeout) throw JAQException

在需要使用数据风控的场景,如注册、登录、活动页面,可以在用户单击注册、登录等业务按钮时、业务逻辑处理前获得该token,服务端通过该token查询风险结果。

入参

Info: HashMap扩展码数,以key-v形式存在于info,可以传空。

timeout:接口超时时间,单位秒。只能传入1~22的之间整型(包括1和22),传入其他值,将使用默认超时时间(22秒)。

返回

wtoken:调用方得到此wtoken后,需要将此token传递到自己的server端,再由自己的server端将此token透传到聚安全server端,获得最后的风控校验结果。

wtoken在后端风险识别使用请参见

错误诊断

接口不抛异常。当调用出错的时候,会在命令行中打印相应的错误日志,错误日志以SG ERROR开头。

错误码

含义

SEC_ERROR_SECURITYBODY_INVALID_THREAD

1401

参数不正确,请检查输入的参数。

SEC_ERROR_SECURITYBODY_INVALID_THREAD

1402

接口调用线程错误。请在非UI线程内调用此接口(因为本接口有耗时操作)。

SEC_ERROR_SECURITYBODY_NET_ERROR

1403

网络超时或网络断开。

SEC_ERROR_SECURITYBODY_SERVER_ERROR

1404

数据风控服务端器错误,请确认应用是否有权限访问此接口。

SEC_ERROR_SECURITYBODY_APPKEY_ERROR

1405

加密文件yw_1222_0335.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey。

SEC_ERROR_SECURITYBODY_SIGNATURE_ERROR

1406

加密文件yw_1222_0335.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey。

SEC_ERROR_SECURITYBODY_ENCRYPTION_ERROR

1407

数据加密错误。

SEC_ERROR_SECURITYBODY_TOP_ERROR

1408

TOP协议错误,请检查手机时间设置是否正常,加密图片yw_1222_0335.jpg使用是否正确。

SEC_ERROR_SECURITYBODY_CONCURRENT

1409

接口被并发调用错误,本接口不支持多线程同时调用。

SEC_ERROR_SECURITYBODY_UNSUPPORTED

1498

接口在这个版本的SDK中不支持。

SEC_ERROR_SECURITYBODY_UNKNOWN_ERR

1499

未知错误,请重试。

验证类型定义

/**

* 当前支持的验证类型:目前支持的类型有滑动验证,即将会有更多验证方式加入

*/

import com.alibaba.verificationsdk.ui.VerifyType;

public enum VerifyType {

NOCAPTCHA(3);

private int value;

private VerifyType(int value) {

this.value = value;

}

public int getValue() {

return value;

}

}

启动验证(依赖业务风险防控结果启动)

/**

* 唤起验证UI

*

* @param ctx 传入调用Activity的上下文

* @param parameters 传入参数

* @param verifyType 目前支持,语音,滑动验证,短信

* @param IActivityCallback 验证界面回调接口,

* 由应用自己实现

*/

public static void startVerifyUI(Context ctx, //

Map parameters,

VerifyType verifyType,

IActivityCallback callback)

parameters 参数设置:

key

value

VerifyActivity.APP_DATA

应用服务器返回给应用的app数据

VerifyActivity.APP_DATA和VerifyType为服务端调用业务风险防控服务API返回的结果。 具体请参见

启动验证(不依赖业务风险防控结果,直接启动验证)

import com.alibaba.verificationsdk.ui.VerifyActivity;

/**

* 唤起验证UI

*

* @param ctx 传入调用Activity的上下文

* @param verifyType 目前滑动验证

* @param IActivityCallback 验证界面回调接口,

* 由应用自己实现

*/

public static void startSimpleVerifyUI(Context ctx, //

VerifyType verifyType,

IActivityCallback callback)

启动验证两个接口:startVerifyUI和startSimpleVerifyUI区别

startSimpleVerifyUI是直接启动验证码接口,功能为纯粹的验证。目前支持的验证类型为滑动。

startVerifyUI会将之前步骤中调用的业务风险防控结果(jsonData和type)带入到验证中,在该结果中会建议使用的验证类型(即将支持语音、短信验证)。

验证界面取消回调

在用户取消验证情况下调用。

public interface IActivityCallback {

onNotifyBackPressed()

风险验证结果回调

验证过程中终止或者验证结束时触发。

import com.alibaba.verificationsdk.ui.VerifyActivity;

/**

* 风险验证结果回调

*

* @param retInt 验证返回状态码

* @param detail 返回详细信息,包含错误信息,二次验证用sessionid

*/

public interface IActivityCallback {

void onResult(int retInt, Map code);

}

retInt验证返回状态码

含义

VERIFY_SUCC

验证成功。

VERIFY_FAILED

验证失败。

detail返回值详情

含义

errorMsg

失败时查详细的错误或失败信息。

sessionID

验证成功或失败返回sessionID做二次验证,如果异常会返回null。

errorCode

失败类型。

关于detail中errorCode详细定义:

含义

ERROR_FROM_SERVER

表示服务端出错。

ERROR_FROM_CLIENT

表示网络等问题,返回数据出错。

ERROR_FROM_BUSSINESS

表示具体业务出错。

关闭验证UI的接口

VerifyActivity.finishVerifyUI();

业务风险防控与验证示例代码

Step 0: 初始化安全组件

private SecurityVerification securityVerification = null;

Context context = this.getApplicationContext();

try {

SecurityInit.Initialize(context);

securityVerification = new SecurityVerification(context);

} catch (JAQException e) {

e.printStackTrace();

}

Step 1: 获得风险采集信息:请不要在主线程调用

int timeout = 12;

String wtoken = null;

try {

wtoken = securityVerification.doJAQVerfificationSync(null, timeout);

if (null != wtoken) {

Log.e(LOG_TAG, String.format("spamRegisterImp Result: %s", wtoken));

onCollectionDone(token);

}

} catch (JAQException e) {

Log.d(LOG_TAG, String.format("spamRegisterImp Errorcode: %d", e.getErrorCode()));

}

如果wtoken返回为nil表示风险采集失败,如果风险采集失败建议认为验证失败,用户阻止其后操作。 返回的wtoken,需要到服务器端进行风险判断.具体调用参看

Step 2: 风险验证

Map params = new HashMap<>();

params.put(VerifyActivity.APP_DATA,app_data);

VerifyActivity.startVerifyUI(LoginActivity.this, params, VerifyActivity.VerifyType.SMS, new VerifyActivity.IActivityCallback() {

@Override

public void onNotifyBackPressed() {

}

@Override

public void onResult(int retInt, Map code) {

switch ( retInt ) {

case VerifyActivity.VERIFY_SUCC:

Log.e(LOG_TAG,code.get("sessionID"));

break;

case VerifyActivity.VERIFY_FAILED:

Log.e(LOG_TAG,code.get("errorCode"));

Log.e(LOG_TAG,code.get("errorMsg"));

break;

default:

break;

}

}

});

Step 3: sessionid 验证

不依赖业务风险防控,直接使用验证码示例代码

Step 0: 初始化安全组件

private SecurityVerification securityVerification = null;

Context context = this.getApplicationContext();

try {

SecurityInit.Initialize(context);

securityVerification = new SecurityVerification(context);

} catch (JAQException e) {

e.printStackTrace();

}

Step 1: 风险验证

VerifyActivity. startSimpleVerifyUI(LoginActivity.this,

VerifyActivity.VerifyType. NOCAPTCHA, new VerifyActivity.IActivityCallback() {

@Override

public void onNotifyBackPressed() {

}

@Override

public void onResult(int retInt, Map code) {

switch ( retInt ) {

case VerifyActivity.VERIFY_SUCC:

Log.e(LOG_TAG,code.get("sessionID"));

break;

case VerifyActivity.VERIFY_FAILED:

Log.e(LOG_TAG,code.get("errorCode"));

Log.e(LOG_TAG,code.get("errorMsg"));

break;

default:

break;

}

}

});

Step 2: sessionid验证

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值