閱讀711 返回首頁    go 小米 go 小米5


Android SDK API__API手冊_數據風控-阿裏雲

安全組件實例化函數

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

  1. 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

  1. public String doJAQVerfificationSync (HashMap<String, String> info,
  2. 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 未知錯誤,請重試

驗證類型定義

  1. /**
  2. * 當前支持的驗證類型:目前支持的類型有滑動驗證,即將會有更多驗證方式加入
  3. */
  4. import com.alibaba.verificationsdk.ui.VerifyType;
  5. public enum VerifyType {
  6. NOCAPTCHA(3);
  7. private int value;
  8. private VerifyType(int value) {
  9. this.value = value;
  10. }
  11. public int getValue() {
  12. return value;
  13. }
  14. }

啟動驗證(依賴業務風險防控結果啟動)

  1. /**
  2. * 喚起驗證UI
  3. *
  4. * @param ctx 傳入調用Activity的上下文
  5. * @param parameters 傳入參數
  6. * @param verifyType 目前支持,語音,滑動驗證,短信
  7. * @param IActivityCallback 驗證界麵回調接口,
  8. * 由應用自己實現
  9. */
  10. public static void startVerifyUI(Context ctx, //
  11. Map<String,String> parameters,
  12. VerifyType verifyType,
  13. IActivityCallback callback)

parameters 參數設置:

key value
VerifyActivity.APP_DATA 應用服務器返回給應用的app數據

VerifyActivity.APP_DATA和VerifyType為服務端調用業務風險防控服務API返回的結果。 具體參考 API概覽-業務風險防控API

啟動驗證(不依賴業務風險防控結果,直接啟動驗證)

  1. import com.alibaba.verificationsdk.ui.VerifyActivity;
  2. /**
  3. * 喚起驗證UI
  4. *
  5. * @param ctx 傳入調用Activity的上下文
  6. * @param verifyType 目前滑動驗證
  7. * @param IActivityCallback 驗證界麵回調接口,
  8. * 由應用自己實現
  9. */
  10. public static void startSimpleVerifyUI(Context ctx, //
  11. VerifyType verifyType,
  12. IActivityCallback callback)

啟動驗證兩個接口:startVerifyUI和startSimpleVerifyUI區別

startSimpleVerifyUI是直接啟動驗證碼接口,功能為純粹的驗證。目前支持的驗證類型為滑動。

startVerifyUI會將之前步驟中調用的業務風險防控結果(jsonData和type)帶入到驗證中,在該結果中會建議使用的驗證類型(即將支持語音、短信驗證)

驗證界麵取消回調

在用戶取消驗證情況下調用

  1. public interface IActivityCallback {
  2. onNotifyBackPressed()

風險驗證結果回調

驗證過程中終止或者驗證結束時觸發

  1. import com.alibaba.verificationsdk.ui.VerifyActivity;
  2. /**
  3. * 風險驗證結果回調
  4. *
  5. * @param retInt 驗證返回狀態碼
  6. * @param detail 返回詳細信息,包含錯誤信息,二次驗證用sessionid
  7. */
  8. public interface IActivityCallback {
  9. void onResult(int retInt, Map<String, String> code);
  10. }

retInt驗證返回狀態碼:

含義
VERIFY_SUCC 驗證成功
VERIFY_FAILED 驗證失敗

detail返回值詳情:

含義
errorMsg 失敗時查詳細的錯誤/失敗信息
sessionID 驗證成功/失敗返回sessionID做二次驗證,如果異常會返回null
errorCode 失敗類型

關於detail中errorCode詳細定義:

含義
ERROR_FROM_SERVER 表示服務端出錯
ERROR_FROM_CLIENT 表示網絡等問題,返回數據出錯
ERROR_FROM_BUSSINESS 表示具體業務出錯

關閉驗證UI的接口

  1. VerifyActivity.finishVerifyUI();

業務風險防控與驗證示例代碼

Step 0: 初始化安全組件

  1. private SecurityVerification securityVerification = null;
  2. Context context = this.getApplicationContext();
  3. try {
  4. SecurityInit.Initialize(context);
  5. securityVerification = new SecurityVerification(context);
  6. } catch (JAQException e) {
  7. e.printStackTrace();
  8. }

Step 1: 獲得風險采集信息:請不要在主線程調用

  1. int timeout = 12;
  2. String wtoken = null;
  3. try {
  4. wtoken = securityVerification.doJAQVerfificationSync(null, timeout);
  5. if (null != wtoken) {
  6. Log.e(LOG_TAG, String.format("spamRegisterImp Result: %s", wtoken));
  7. onCollectionDone(token);
  8. }
  9. } catch (JAQException e) {
  10. Log.d(LOG_TAG, String.format("spamRegisterImp Errorcode: %d", e.getErrorCode()));
  11. }

如果wtoken返回為nil表示風險采集失敗,如果風險采集失敗建議認為驗證失敗,用戶阻止其後操作。
返回的wtoken,需要到服務器端進行風險判斷.具體調用參看 API概覽-業務風險防控API

Step 2: 風險驗證

  1. Map<String,String> params = new HashMap<>();
  2. params.put(VerifyActivity.APP_DATA,app_data);
  3. VerifyActivity.startVerifyUI(LoginActivity.this, params, VerifyActivity.VerifyType.SMS, new VerifyActivity.IActivityCallback() {
  4. @Override
  5. public void onNotifyBackPressed() {
  6. }
  7. @Override
  8. public void onResult(int retInt, Map<String, String> code) {
  9. switch ( retInt ) {
  10. case VerifyActivity.VERIFY_SUCC:
  11. Log.e(LOG_TAG,code.get("sessionID"));
  12. break;
  13. case VerifyActivity.VERIFY_FAILED:
  14. Log.e(LOG_TAG,code.get("errorCode"));
  15. Log.e(LOG_TAG,code.get("errorMsg"));
  16. break;
  17. default:
  18. break;
  19. }
  20. }
  21. });

Step 3: sessionid 驗證
具體調用參看 API概覽-驗證碼服務API

不依賴業務風險防控,直接使用驗證碼示例代碼

Step 0: 初始化安全組件

  1. private SecurityVerification securityVerification = null;
  2. Context context = this.getApplicationContext();
  3. try {
  4. SecurityInit.Initialize(context);
  5. securityVerification = new SecurityVerification(context);
  6. } catch (JAQException e) {
  7. e.printStackTrace();
  8. }

Step 1: 風險驗證

  1. VerifyActivity. startSimpleVerifyUI(LoginActivity.this,
  2. VerifyActivity.VerifyType. NOCAPTCHA, new VerifyActivity.IActivityCallback() {
  3. @Override
  4. public void onNotifyBackPressed() {
  5. }
  6. @Override
  7. public void onResult(int retInt, Map<String, String> code) {
  8. switch ( retInt ) {
  9. case VerifyActivity.VERIFY_SUCC:
  10. Log.e(LOG_TAG,code.get("sessionID"));
  11. break;
  12. case VerifyActivity.VERIFY_FAILED:
  13. Log.e(LOG_TAG,code.get("errorCode"));
  14. Log.e(LOG_TAG,code.get("errorMsg"));
  15. break;
  16. default:
  17. break;
  18. }
  19. }
  20. });

Step 3: sessionid 驗證
具體調用參看 API概覽-驗證碼服務API

最後更新:2016-11-23 16:04:21

  上一篇:go iOS SDK API__API手冊_數據風控-阿裏雲
  下一篇:go 注冊防控API__業務風險防控API_API手冊_數據風控-阿裏雲