场景简介
短信认证是最基本也是用户使用最多的辅助认证方式,熟悉了用户名密码+短信认证场景后,要实现其他类型的主认证+辅助认证,流程完全一致,有需求时参考MainApp中的SecondAuthViewController实现。
前置步骤
在实际集成之前,我们要确保已经进行过开发准备
流程图
集成步骤
1、实现用户名密码主认证
参考典型场景用户名密码认证
2、处理二次认证-短信认证
如果aTrust身份认证服务器有启用短信认证时会进入当前流程,用户名密码认证通过后会执行onAuthProgress回调,并通过nextAuthType参数告知需要二次认证的类型为短信认证。 当调用该回调时,会先发送短信到用户手机上,所以此时只需展示对应的短信认证UI界面,通过UI收集到短信验证码,调用二次认证接口完成二次认证。
注意:如果管理员配置了除短信验证码以外的二次认证方式(如首次登陆强制修改密码),也会进入到此回调中,此时如果确认不需要支持此二次认证,建议提示用户不支持此认证,让管理员调整配置
示例代码如下:
/**
* 主认证成功,但需要辅助认证(下一步认证)
*
* @param nextAuthType 下一步认证类型
* @param msg 下一步认证信息
*/
- (void)onAuthProcess:(SFAuthType)nextAuthType message:(BaseMessage *)msg {
switch (nextAuthType) {
case SFAuthTypeSMS:
// 处理短信主认证的一些逻辑,如显示验证码输入框
[self showSMSAuthAlert:(SmsMessage *)msg];
break;
default:
/**
* 服务端配置了首次登陆强制修改密码,或者其他非短信验证码二次认证类型时,认证时也会回调此方法,
* 此时如果不打算适配此类型二次认证,建议给用户提示,让管理员调整配置
*/
[AlertUtil showAlert:[NSString stringWithFormat:@"暂不支持此种认证类型(%ld)", (long)nextAuthType] message:@"管理员请关掉此认证"];
break;
}
}
/**
* 调用短信辅认证,输入参数为短信验证码
*/
[[SFUemSDK sharedInstance] doSecondaryAuth:SFAuthTypeSMS data:@{kAuthKeySMS:code}];
3、认证成功
主认证和二次认证都成功后,会执行onAuthSuccess回调,至此整个认证流程就结束了,认证成功后,应用就可以正常的访问aTrust管理员配置的内网服务器资源, 执行业务代码
示例代码如下:
/**
* 认证成功的回调
* @param msg 认证成功的信息
*/
- (void)onAuthSuccess:(BaseMessage *)msg {
//认证成功的业务
}
4、认证失败
如果有认证失败的情况,会执行onAuthFailed回调, 在该回调中提示用户,重新开始认证
示例代码如下:
/**
* 认证失败的回调
*
* @param msg 错误信息
*/
- (void)onAuthFailed:(BaseMessage *)msg {
// 重新开始认证或者其他逻辑
}
5、重新获取验证码
短信验证码有效期可以通过onAuthProgress中的参数message(参考SFSmsMessage)来获取,短信验证码失效后,可以调用接口重新获取
示例代码如下:
/**
* 短信验证码过期后,需要调用重新获取短信验证码
*/
[[SFUemSDK sharedInstance].auth regetSmsCode:^(SmsMessage * _Nullable message, NSError * _Nullable error) {
if (!error) {
//重新获取短信验证码成功
}
}];