711
阿里云
Android SDK API__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文件。(不同版本的不通用,请不要拿其他版本的替换) |
SEC_ERROR_INIT_UNKNOWN_ERROR | 199 | 未知错误,请重试 |
获取数据风控wtoken
public String doJAQVerfificationSync (HashMap<String, String> info,
int timeout) throw JAQException
在需要使用数据风控的场景,如注册、登陆、活动页面,可以在用户点击“注册”、“登陆”等业务按钮时、业务逻辑处理前获得该token,服务端通过该token查询风险结果。
入参
Info: HashMap 扩展码数,以key-v形式存在于info,可以传空;
timeout:接口超时时间,单位秒。只能传入1 <= timeout <= 22的整型,传入其他值,将使用默认超时时间(22秒);
返回
- wtoken:调用方得到此wtoken后,需要将此token传递到自己的server端,再由自己的server端将此token透传到聚安全server端,获得最后的风控校验结果。
- wtoken在后端风险识别使用 参考 API概览-业务风险防控API
错误诊断
接口不抛异常。当调用出错的时候,会在命令行中打印相应的错误日志,错误日志以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<String,String> parameters,
VerifyType verifyType,
IActivityCallback callback)
parameters 参数设置:
key | value |
---|---|
VerifyActivity.APP_DATA | 应用服务器返回给应用的app数据 |
VerifyActivity.APP_DATA和VerifyType为服务端调用业务风险防控服务API返回的结果。 具体参考 API概览-业务风险防控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<String, String> 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,需要到服务器端进行风险判断.具体调用参看 API概览-业务风险防控API
Step 2: 风险验证
Map<String,String> 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<String, String> 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 验证
具体调用参看 API概览-验证码服务API
不依赖业务风险防控,直接使用验证码示例代码
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<String, String> 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 验证
具体调用参看 API概览-验证码服务API
最后更新:2016-11-23 16:04:21
上一篇:
iOS SDK API__API手册_数据风控-阿里云
下一篇:
注册防控API__业务风险防控API_API手册_数据风控-阿里云
创建定时任务__API快速入门_快速入门_弹性伸缩-阿里云
更新自定义转码模版__自定义转码模板接口_API使用手册_媒体转码-阿里云
报警历史__监控结果管理_用户指南_业务实时监控服务 ARMS-阿里云
步骤 4:格式化和挂载数据盘__快速入门(Linux)_云服务器 ECS-阿里云
安全组配置(经典网络)__使用金融云产品_金融云-阿里云
获取云解析收费版本产品列表__云解析产品管理接口_API文档_云解析-阿里云
Hadoop Streaming__Hadoop_开发人员指南_E-MapReduce-阿里云
数据类型支持情况__进阶与深入_数据集成-阿里云
查询实例SSL链路__实例管理_API 参考_云数据库 RDS 版-阿里云
性能测试实施及管理__高级课程_性能测试视频教程_性能测试-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云