感谢您的反馈!
#import <SecurityGuardSDK/Open/OpenSecurityGuardManager.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/OpenSecurityBodyDefine.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h> @protocol IOpenSecurityBodyComponent <NSObject> /** * 获取风控参数 * @return 用户昵称,获取失败返回nil */ - (NSString*) getSecurityBodyDataEx: (NSString*) timeStamp appKey: (NSString*) appKey authCode: (NSString*) authCode extendParam: (NSDictionary*) extendParam flag: (int) flag env: (int) env error: (NSError* __autoreleasing*) error; @end
在需要使用数据风控的场景,如注册、登陆、活动页面,可以在用户点击“注册”、“登陆”等业务按钮时、业务逻辑处理前获得该token,服务端通过该token查询风险结果
入参
timeStamp nil
appKey nil
authCode 0335
extendParam nil
flag OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL
env OPEN_SECURITYBODY_ENV_ONLINE
error NSError对象指针
返回
调用成功不为空的wtoken,需要将此token传递到自己的server端,再由自己的server端将此 token透传到聚安全server端,获得最后的风控校验结果
wtoken
在后段风险识别使用 参考 数据风控-服务器接入指南-风险识别
注意
发生获取不到wtoken,多半因为0335图片设置有问题。一个图片对应一个bundleid。如果变更bundleid,需要到聚安全网站生成新的图片;如果一个app存在不同版本在使用不同bundleid,需要重新获得图片;在使用msauthdemo时,请将demo的bundleid改成上传ipa时的bundleid。
错误诊断
接口不抛异常。当调用出错的时候,会在命令行中打印相应的错误日志,错误日志以SG ERROR开头:
错误码 | 值 | 含义 |
---|---|---|
NOT FOUND YW_XXX.JPG | 203 | 可能AUTHCODE传递错误,或者没有加入图片到项目 |
YW_XXX.JPG TOPKEY EROOR | 1215 | 可能AUTHCODE传递错误,或者没有加入图片到项目 |
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_xxx.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey |
SEC_ERROR_SECURITYBODY_SIGNATURE_ERROR | 1406 | 加密文件yw_1222_xxx.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
/** * 当前支持的验证类型 */ typedef enum : NSUInteger { MSAuthTypeSlide, MSAuthTypeSms, MSAuthTypeCall, } MSAuthType;
import MSAuthVCFactory.h
/** * 获取验证VC的工厂方法 * * @param type 验证类型。目前支持的类型有滑动验证、短信验证和电话验证 * @param jsonData 聚安全服务器透传下发数据 * @param delegate 处理回调结果的代理 * @param language 需要展示的语言,如:zh_CN 简体中文, en 英文,language要和相应的Localizable.strings对应。nil为当前环境语言。如果语言文件不存在显示英文 * @param authCode 0335 * @param appKey 根据接入环境需要填入默认填写空 * @return 返回一个实例VC */ + (UIViewController *)vcWithAuthType:(MSAuthType)type jsonData:(NSString *)jsonData language:(NSString*)lang Delegate:(id<MSAuthProtocol>)delegate authCode:(NSString*)code appKey :(NSString*)key;
type
和jsondata
具体参考 数据风控-服务器接入指南-风险识别
参数 | 赋值 |
---|---|
type | 图中captcha_type |
jsonData | 图中captcha_client_need_info |
appKey | 根据接入环境需要填入默认填写空 |
authCode | 填写0335 |
使用pushViewController 呼出界面
UIViewController *vc = [MSAuthVCFactory vcWithAuthType:服务器回传的验证类型 jsonData:服务器回传的验入参 language:@"en" Delegate:self authCode:@"0335" appKey:nil]; [self.navigationController pushViewController:vc animated:YES];
使用presentViewController,带navigationbar
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc]; //now present this navigation controller modally [self presentViewController:navigationController animated:YES completion:^{ }];
/** * 验证VC的工厂方法, 使用风险验证用户直接调用这个接口 * @param type 验证类型。目前支持的类型有滑动验证 * @param language 需要展示的语言,如:zh_CN 简体中文, en 英文,language要和相应的Localizable.strings对应。nil为当前环境语言。如果语言文件不存在显示英文 * @param delegate 处理回调结果的代理 * @param authCode 填写0335 * @param appKey 根据接入环境需要填入默认填写空 * @return 返回一个实例VC */ + (UIViewController *)simapleVerifyWithType:(MSAuthType)type language:(NSString*)lang Delegate:(id<MSAuthProtocol>)delegate authCode:(NSString*)code appKey :(NSString*)key;
与前一个接口的区别,不需要传入jsondata。调用可以直接做为人机识别调用使用
type
具体参考 数据风控-服务器接入指南-风险识别
参数 | 赋值 |
---|---|
type | 图中captcha_type |
appKey | 根据接入环境需要填入默认填写空 |
authCode | 填写0335 |
simapleVerifyWithType
是纯验证接口,功能为纯粹的验证,用户可以使用聚安全的风控识别能力也可以使用原有系统能力。目前支持的验证类型为滑动
.从能力上讲,simapleVerifyWithType
是做为人机识别验证模式
vcWithAuthType
会将前面JAQ风险识别带入到验证中,识别的结果以jsonData
和type
形式做为。用户服务器可以将带验证人的电话号码传入,所以在滑动
以外还可以支持语音``短信
。从能力上看vcWithAuthType
是做为人机识别验证模式,还可以实现对于人身份核实(比如,改密,注册场景)
在回调函数中用户自己关闭controller,sdk内部不负责控件的关闭
typedef enum { VERIFY_REUSLT_OK = 0, VERIFY_REUSLT_FAIL = 1 }t_verify_reuslt
@protocol MSAuthProtocol <NSObject> /** * 验证结果的回调 * * @param error 验证错误返回码, nil表示正确 非空为验证失败 * @param sessionId 聚安全服务器下发二次验证sessionid, * 三方服务器利用token获得验证结果 */ - (void)verifyDidFinishedWithResult:(t_verify_reuslt)code Error:(NSError *)error SessionId:(NSString *)sessionId; @end
参数error
对象 ErrorDomain
详细定义
参数error
对象 中出现sendStatus
详细定义
枚举值 | 含义 |
---|---|
-10 | 短信验证码发送失败 |
-20 | 语音验证码发送失败 |
-30 | 邮件验证码发送失败 |
-50 | 摇一摇发起失败 |
-60 | 滚小球发起失败 |
参数error
对象 中出现verifyStatus
详细定义
枚举值 | 含义 |
---|---|
-11 | 短信验证码验证失败 |
-21 | 语音验证码验证失败 |
-31 | 邮件验证码验证失败 |
-51 | 摇一摇检查失败 |
-61 | 滚小球检查失败 |
进行登录,改密,找密,注册等涉及敏感场景时,需要调用风险采集获得token。调用者需要把token传到用户的服务端,服务端用token请求聚安全服务端获得相应的风险判断。聚安全会把风险判断以json形式返回。
#import <SecurityGuardSDK/Open/OpenSecurityGuardManager.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/OpenSecurityBodyDefine.h> #import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h>
获得风险采集信息 id<IOpenSecurityBodyComponent> sbComp = [[OpenSecurityGuardManager getInstance] getSecurityBodyComp]; NSError* error = nil; NSString* wtoken = [sbComp getSecurityBodyDataEx: nil appKey: nil authCode: @"0335" extendParam: nil flag: OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL //指定格式 env: OPEN_SECURITYBODY_ENV_ONLINE //指定环境 error: &error];
如果token返回为nil表示风险采集失败,如果风险采集失败建议认为验证失败,用户阻止其后操作
返回的wtoken
,需要到服务器端进行风险判断.具体调用参看 风险识别
#import <MSAuthSDK/MSAuthSDK.h>
UIViewController *vc = [MSAuthVCFactory vcWithAuthType:服务器回传的验证类型 jsonData:服务器回传的验入参 language:@"en" Delegate:self authCode:@"0335" appKey:nil]; [self.navigationController pushViewController:vc animated:YES];
@interface ViewController () <MSAuthProtocol> ... #pragma mark - MSAuthProtocol methods - (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId { dispatch_async(dispatch_get_main_queue(), ^{ if (error) { NSLog(@"验证失败 %@", error); } else { NSLog(@"验证通过 %@", sessionId); } //将sessionid传到经过app服务器做二次验证 }); }
#import <MSAuthSDK/MSAuthSDK.h>
UIViewController *vc = [MSAuthVCFactory simapleVerifyWithType:服务器回传的验证类型 language:@"en" Delegate:self authCode:@"0335" appKey:nil];
@interface ViewController () <MSAuthProtocol> ... #pragma mark - MSAuthProtocol methods - (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId { dispatch_async(dispatch_get_main_queue(), ^{ if (error) { NSLog(@"验证失败 %@", error); } else { NSLog(@"验证通过 %@", sessionId); } [self.navigationController popViewControllerAnimated:YES]; //将sessionid传到经过app服务器做二次验证 }); }
UI定制
你通过修改MSAuthSDK.framework中两个bundles: MSADefaultImages.bundle和MSADefaultLocale.bundle中的字符串和图片来定制UI.
多语言
MSADefaultLocale.bundle 增加相应语言