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-阿裏雲