类校验错误 android,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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
android笔记.doc android笔记.pdf 1 系统配置... ..1 1.1 建立SDK开发环境... ...2 1.2 Android源码的编译 ... .6 1.3 编译在G1 上运行的android 2.1(eclair)代码 ... ..9 1.4 编译在G1 上运行的android 2.2(froyo)代码_旧方法... ..12 1.5 编译在G1 上运行的android 2.2(froyo)代码_新方法... ..15 1.6 编译在N1 上运行的android 2.3(GingerBread)代码... .18 1.7 系统结构... ..21 1.8 模拟器调试与真机调试... ..22 1.9 安装和卸载应用程序(apk包) ... ...23 1.10 系统升级... ..26 1.11 android系统支持app2sd(修改boot.img) ... ..27 2 基本概念... ...30 2.1 Android组件 ... ..31 2.1.1 基本组件... .31 2.1.2 组件间的通讯... ..32 2.1.3 intent使用方法... .33 2.2 界面开发... ..35 2.2.1 界面元素... .35 2.2.2 布局的实现... ...36 2.2.3 事件响应... .37 2.2.4 应用软件代码结构... ...38 2.2.5 国际化的支持(多语言) ... ...39 2.2.6 常见问题及解决方法... ..40 2.2.7 android是重要的包... ...41 2.3 界面元素分析... ...42 2.4 修改公共控件... ...43 2.5 源码中常用于参考的代码 ... .44 3 程序开发... ...45 3.1 相关工具介绍... ...46 3.1.1 从c++到java(一) ... ..46 3.1.2 从c++到java(二) ... ..47 3.2 常用技术... ..49 3.2.1 如何新建和使用控件... ..49 3.2.2 使用定时器Timer及消息处理 ... ...51 3.2.3 操作调试数据库与ContentProvider详解... ..53 3.2.4 电源管理... .56 3.2.5 开发桌面小程序AppWidget ... ...58 3.2.6 代码中运行二进制程序或脚本 ... .60 3.2.7 Android自带的md5 校验 ... ..61 3.2.8 将数据打进apk包 ... ..63 3.2.9 如何改变窗口的标题栏的布局 ... .66 3.2.10 动态改变控件大小... ...67 3.2.11 缩放drawable ... ...68 2 3.2.12 解析apk包内容 ... ...69 3.3 Java对C库的调用 ... ...70 3.3.1 android中使用JNI... ..70 3.3.2 安装使用NDK ... .72 3.3.3 在源码中将库打进apk ... ...73 3.3.4 简单的C库调试方法 ... ...75 3.4 典型应用... ..76 3.4.1 语音合成... .76 3.4.2 语音识别简介... ..79 3.4.3 语音识别方法一:使用intent调用语音识别程序 ... ..80 3.4.4 语音识别方法二:应用程序自己调用语音识别库 ... ..82 3.4.5 语音识别方法三:使用Service调用语音识别程序 ... ..84 3.4.6 人脸识别... .87 3.4.7 图像识别... .89 3.4.8 文字识别... .90 3.4.9 卫星定位... .91 3.4.10 多媒体播放... ...95 3.4.11 访问网络... .97 3.4.12 博客客户端的实现... ...99 3.5 调试技术... ...102 3.5.1 JDWP调试 ... ..102 3.5.2 运行dalvik测试程序... ..103 3.5.3 测试小程序... .104 3.5.4 dalvik提供的调试工具集 ... ...107 3.5.5 c++程序的调试 ... ... 110 3.5.6 测试工具CTS ... ... 113 3.5.7 解决eclipse无法识别API的问题 ... ... 115 3.5.8 调试方法补充... ... 116 3.6 换肤(theme) ... . 118 3.6.1 当前的换肤方法(theme) ... . 118 3.6.2 制作换肤包... .120 4 android架构层分析 ... ..122 4.1 启动过程... ...123 4.1.1 开机流程... ..123 4.1.2 开机动画... ..125 4.1.3 android应用的启动过程... ..127 4.2 服务的原理与使用... ..128 4.3 键盘事件处理... .130 4.4 包管理... .131 4.5 传感器... .132 4.6 浅析dalvik虚拟机JIT技术的实现... ...133 4.7 应用程序的签名(Signature) ... ...135 4.8 应用的权限... ..138 4.9 屏幕密度Density ... ..140 3 4.10 Prelink实现的源码分析 ... ...142 4.11 适配硬件平台... .145 4.12 其他介绍... ...147 4.12.1 手机保护Keyguard ... .147 4.12.2 空中升级Fota... .148 4.12.3 Flash分区 ... .149
原创2010年android文档的整理打包的pdf档(含目录) 文档内容不能复制, 介意者请慎下. 大部分内容可在http://blog.csdn.net/xieyan0811上看到 文档目录如下 1 系统配置 1 1.1 建立SDK开发环境 2 1.2 Android源码的编译 6 1.3 编译在G1上运行的android 2.1(eclair)代码 9 1.4 编译在G1上运行的android 2.2(froyo)代码_旧方法 12 1.5 编译在G1上运行的android 2.2(froyo)代码_新方法 15 1.6 编译在N1上运行的android 2.3(GingerBread)代码 18 1.7 系统结构 21 1.8 模拟器调试与真机调试 22 1.9 安装和卸载应用程序(apk包) 23 1.10 系统升级 26 1.11 android系统支持app2sd(修改boot.img) 27 2 基本概念 30 2.1 Android组件 31 2.1.1 基本组件 31 2.1.2 组件间的通讯 32 2.1.3 intent使用方法 33 2.2 界面开发 35 2.2.1 界面元素 35 2.2.2 布局的实现 36 2.2.3 事件响应 37 2.2.4 应用软件代码结构 38 2.2.5 国际化的支持(多语言) 39 2.2.6 常见问题及解决方法 40 2.2.7 android是重要的包 41 2.3 界面元素分析 42 2.4 修改公共控件 43 2.5 源码中常用于参考的代码 44 3 程序开发 45 3.1 相关工具介绍 46 3.1.1 从c++到java(一) 46 3.1.2 从c++到java(二) 47 3.2 常用技术 49 3.2.1 如何新建和使用控件 49 3.2.2 使用定时器Timer及消息处理 51 3.2.3 操作调试数据库与ContentProvider详解 53 3.2.4 电源管理 56 3.2.5 开发桌面小程序AppWidget 58 3.2.6 代码中运行二进制程序或脚本 60 3.2.7 Android自带的md5校验 61 3.2.8 将数据打进apk包 63 3.2.9 如何改变窗口的标题栏的布局 66 3.2.10 动态改变控件大小 67 3.2.11 缩放drawable 68 3.2.12 解析apk包内容 69 3.3 Java对C库的调用 70 3.3.1 android中使用JNI 70 3.3.2 安装使用NDK 72 3.3.3 在源码中将库打进apk 73 3.3.4 简单的C库调试方法 75 3.4 典型应用 76 3.4.1 语音合成 76 3.4.2 语音识别简介 79 3.4.3 语音识别方法一:使用intent调用语音识别程序 80 3.4.4 语音识别方法二:应用程序自己调用语音识别库 82 3.4.5 语音识别方法三:使用Service调用语音识别程序 84 3.4.6 人脸识别 87 3.4.7 图像识别 89 3.4.8 文字识别 90 3.4.9 卫星定位 91 3.4.10 多媒体播放 95 3.4.11 访问网络 97 3.4.12 博客客户端的实现 99 3.5 调试技术 102 3.5.1 JDWP调试 102 3.5.2 运行dalvik测试程序 103 3.5.3 测试小程序 104 3.5.4 dalvik提供的调试工具集 107 3.5.5 c++程序的调试 110 3.5.6 测试工具CTS 113 3.5.7 解决eclipse无法识别API的问题 115 3.5.8 调试方法补充 116 3.6 换肤(theme) 118 3.6.1 当前的换肤方法(theme) 118 3.6.2 制作换肤包 120 4 android架构层分析 122 4.1 启动过程 123 4.1.1 开机流程 123 4.1.2 开机动画 125 4.1.3 android应用的启动过程 127 4.2 服务的原理与使用 128 4.3 键盘事件处理 130 4.4 包管理 131 4.5 传感器 132 4.6 浅析dalvik虚拟机JIT技术的实现 133 4.7 应用程序的签名(Signature) 135 4.8 应用的权限 138 4.9 屏幕密度Density 140 4.10 Prelink实现的源码分析 142 4.11 适配硬件平台 145 4.12 其他介绍 147 4.12.1 手机保护Keyguard 147 4.12.2 空中升级Fota 148 4.12.3 Flash分区 149

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值