閱讀992 返回首頁    go 阿裏雲


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

獲取數據風控wtoken

  1. #import <SecurityGuardSDK/JAQ/SecurityVerification.h>
  2. +(NSString*)doJAQVerfificationSync:(NSDictionary*)info
  3. timeout:(NSInteger) timeout;

在需要使用數據風控的場景,如注冊、登陸、活動頁麵,可以在用戶點擊“注冊”、“登陸”等業務按鈕時、業務邏輯處理前獲得該token,服務端通過該token查詢風險結果。函數不能再主線程執行,否則會拋出異常。

入參

  • Info: nil;

  • 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 未知錯誤,請重試

驗證類型定義

MSAuthDefines.h

  1. /**
  2. * 當前支持的驗證類型:目前支持的類型有滑動驗證,即將會有更多驗證方式加入
  3. */
  4. typedef enum : NSUInteger {
  5. MSAuthTypeSlide
  6. } MSAuthType;

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

import MSAuthVCFactory.h

  1. @interface MSAuthVCFactory : NSObject
  2. /**
  3. * 獲取驗證VC的工廠方法
  4. *
  5. * @param language 需要展示的語言,如:zh_CN 簡體中文, en 英文。nil為當前環境。如果語言包不存在顯示英文
  6. * @param type 驗證類型。目前支持的類型有滑動驗證,即將會有更多驗證方式加入
  7. * @param jsonData 數據風控服務器透傳下發數據
  8. * @param delegate 處理回調結果的代理
  9. * @param lang 設置語言
  10. * @return 返回一個實例VC
  11. */
  12. + (UIViewController *)vcWithAuthType:(MSAuthType)type
  13. jsonData:(NSString *)jsonData
  14. language:(NSString*)lang
  15. Delegate:(id<MSAuthProtocol>)delegate;

通過函數可以唿出驗證UI

jsonData和type為服務端通過業務風險防控獲得的結果。 具體參考 API概覽-業務風險防控API

pushViewController

  1. UIViewController *vc = [MSAuthVCFactory simapleVerifyWithType:服務器回傳的驗證類型
  2. language:@"zh_CN"
  3. Delegate:self];
  4. [self.navigationController pushViewController:vc animated:YES];

使用presentViewController,帶navigationbar

  1. UINavigationController *navigationController =
  2. [[UINavigationController alloc] initWithRootViewController:vc];
  3. //now present this navigation controller modally
  4. [self presentViewController:navigationController
  5. animated:YES
  6. completion:^{
  7. }];

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

  1. /**
  2. * 驗證VC的工廠方法, 使用風險驗證用戶直接調用這個接口
  3. * @param type 驗證類型。目前支持的類型有滑動驗證,即將會有更多驗證方式加入
  4. * @param language 需要展示的語言,如:zh_CN 簡體中文, en 英文。nil為當前環境。如果語言包不存在顯示英文
  5. * @param delegate 處理回調結果的代理
  6. * @return 返回一個實例VC
  7. */
  8. + (UIViewController *)simapleVerifyWithType:(MSAuthType)type
  9. language:(NSString*)lang
  10. Delegate:(id<MSAuthProtocol>)delegate;

啟動驗證兩個接口:simapleVerifyWithType和vcWithAuthType區別

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

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

驗證結果回調

用戶通過回調函數關閉controller,sdk內部不會關閉此控件。

  1. typedef enum {
  2. VERIFY_REUSLT_OK = 0,
  3. VERIFY_REUSLT_FAIL = 1
  4. }t_verify_reuslt
  1. @protocol MSAuthProtocol <NSObject>
  2. /**
  3. * 驗證結果的回調
  4. *
  5. * @param error 驗證錯誤返回碼, nil表示正確 非空為驗證失敗
  6. * @param sessionId 聚安全服務器下發二次驗證sessionid,
  7. * 三方服務器利用token獲得驗證結果
  8. */
  9. - (void)verifyDidFinishedWithResult:(t_verify_reuslt)code
  10. Error:(NSError *)error
  11. SessionId:(NSString *)sessionId;
  12. @end

參數error對象 ErrorDomain詳細定義:

含義
AliAuthGeneric 一般性錯誤來自網絡異常
AliAuthServer 網關通信錯誤
AliAuthServiceNc 滑動業務錯誤
AliAuthService 驗證業務錯誤

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

Step 0: 風險采集和判斷

進行登錄,改密,找密,注冊等涉及敏感場景時,需要調用風險采集獲得wtoken。調用者需要把wtoken傳到用戶的服務端,服務端用wtoken請求業務風險防控API獲得相應的風險結果。數據風控服務端會把風險結果以json形式返回。

  1. #import <SecurityGuardSDK/JAQ/SecurityVerification.h>
  1. 獲得風險采集信息,
  2. NSString* wtoken = [SecurityVerification doJAQVerfificationSync:info
  3. timeout:timeout];

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

Step 1: 引入頭文件

  1. #import <MSAuthSDK/MSAuthSDK.h>

Step 2: 風險驗證 viewcontroller

  1. UIViewController *vc = [MSAuthVCFactory vcWithAuthType:服務器回傳的驗證類型
  2. jsonData:@"來自風險識別後的返回值"
  3. language:@"zh_CN"
  4. Delegate:self];
  5. [self.navigationController pushViewController:vc animated:YES];

Step 3: 實現delegate回調

  1. @interface ViewController () <MSAuthProtocol>
  2. ...
  3. #pragma mark - MSAuthProtocol methods
  4. - (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId {
  5. dispatch_async(dispatch_get_main_queue(), ^{
  6. if (error) {
  7. NSLog(@"驗證失敗 %@", error);
  8. } else {
  9. NSLog(@"驗證通過 %@", sessionId);
  10. }
  11. //將sessionid傳到經過app服務器做二次驗證
  12. });
  13. }

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

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

Step 0: 引入頭文件

  1. #import <MSAuthSDK/MSAuthSDK.h>

Step 1: 調用工廠類生成所需二次驗證 viewcontroller

  1. UIViewController *vc = [MSAuthVCFactory simapleVerifyWithType:服務器回傳的驗證類型
  2. language:@"zh_CN"
  3. Delegate:self];
  4. [self.navigationController pushViewController:vc animated:YES];

Step 2: 實現delegate回調

  1. @interface ViewController () <MSAuthProtocol>
  2. ...
  3. #pragma mark - MSAuthProtocol methods
  4. - (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId {
  5. dispatch_async(dispatch_get_main_queue(), ^{
  6. if (error) {
  7. NSLog(@"驗證失敗 %@", error);
  8. } else {
  9. NSLog(@"驗證通過 %@", sessionId);
  10. }
  11. [self.navigationController popViewControllerAnimated:YES];
  12. //將sessionid傳到經過app服務器做二次驗證
  13. });
  14. }

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

錯誤處理

1.如看到以下報錯:
App Transport Security has blocked a cleartext HTTP (https://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.
SG ERROR: 1210

你需要在info.plist中設置

  1. <key>NSAppTransportSecurity</key>
  2. <dict>
  3. <key>NSAllowsArbitraryLoads</key><true/>
  4. </dict>

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

  上一篇:go 滑動驗證插件__使用手冊_數據風控-阿裏雲
  下一篇:go Android SDK API__API手冊_數據風控-阿裏雲