OneLogin (一键登录)
进阶模式和常规模式是一键登录的两种调用逻辑,如无特别需求建议直接使用进阶模式,两模式不可混合调用。
常规模式
预取号和授权页拉起时机均由开发者自主控制。使用此调用逻辑,开发者需自主处理预取号的时机和超期重试的逻辑等。使用这种方式时,请使用 OneLogin
类中的方法。
1、调用逻辑
registerWithAppID:
初始化 SDK 并配置APPID
preGetTokenWithCompletion:
预取号(应用启动或进入登录页的前一个页面、用户登出时是调用该方法的时机)requestTokenWithViewController:viewModel:completion:
拉起授权页面(调用该方法前可以调用isPreGettedTokenValidate
判断预取号是否成功)dismissAuthViewController:completion:
关闭授权页面
2、初始化
方法原型
/** |
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
appID | 是 | NSString | 极验 appID |
接口作用
传入极验 appID,并开始预取号,注意客户端 AppID 需与服务端保持一致
使用场景
保证在拉起授权页面前至少调用一次
只需调用一次,多次调用不会多次初始化,与一次调用效果一致
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在 UIViewController 的
viewDidLoad
方法中添加初始化代码
- (void)viewDidLoad { |
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在 UIViewController 的
viewDidLoad
方法中添加初始化代码
override func viewDidLoad() { |
3、预取号
方法原型
/** |
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
completion | 否 | void(^)(NSDictionary * _Nullable sender) | 获取临时凭证回调 |
回调的字段如下:
获取成功: |
字段 | 说明 |
---|---|
status | 状态码,200 表示成功,500 表示失败 |
number | 脱敏手机号 |
operatorType | 运营商 |
errorCode | 获取失败时的错误码 |
msg | 获取失败时表示失败原因 |
接口作用
可以提前获知当前用户的手机网络环境是否符合一键登录的使用条件,成功后将得到用于一键登录使用的临时凭证,默认的凭证有效期: 60 分钟(移动) / 60 分钟(电信) / 10 分钟(联通)
应用启动时或者进入登录页的前一个页面、用户登出时是调用该方法的时机
4、进入授权页面
方法原型
/** |
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
viewController | 是 | UIViewController | 进入授权页面的上一级页面 |
viewModel | 否 | OLAuthViewModel | 授权页面UI配置参数 |
completion | 否 | void(^)(NSDictionary * _Nullable result) | 获取token回调 |
注意:
1、在成功进入授权页面时,不会立即收到 completion 回调,在授权页面点击一键登录、切换账号或者返回按钮时,才会收到 completion 回调;
2、若不能成功进入授权页面,则会立即收到 completion 回调
回调的字段如下:
获取成功: |
字段 | 说明 |
---|---|
status | 状态码,200 表示成功,500 表示失败 |
token | 换取手机号需要的 token |
processID | 流水号 |
authcode | authcode |
appID | appID |
operatorType | 运营商 |
number | 脱敏手机号 |
errorCode | 失败时的具体错误码 |
msg | 失败时表示失败原因 |
接口作用
拉起授权页面,用户在授权页面点击一键登录,即可获取 token,拿该 token 即可换取对应的手机号
调用该方法前建议先调用方法判断预取号是否成功
使用场景
用户进行一键登录操作时调用该方法,如果初始化成功SDK 将会拉起授权页面
可以在多处调用
需在调用初始化方法之后且预取号成功之后
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在需要使用一键登录的地方调用极验一键登录接口
- (IBAction)normalLoginAction:(UIButton *)sender { |
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在需要使用一键登录的地方调用极验一键登录接口
func normalLoginAction(_ sender: UIButton) { |
5、手动关闭授权页面
方法原型
/** |
参数描述
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
animated | 是 | BOOL | 关闭授权页面时是否需要动画 |
completion | 否 | void(^)(void) | 关闭授权页面后的回调 |
接口作用
当开发者设置点击一键登录或者自定义控件不自动销毁授权页时,将需要自行调用此方法主动销毁授权页,建议在置换手机号成功后销毁,请不要使用其他方式关闭授权页面
关闭授权页面时机
在授权页面点击切换账号按钮时
在授权页面点击一键登录按钮收到 requestToken 结果回调之后
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在需要关闭授权页面的地方调用极验关闭授权页面接口
- (void)dismissAuthVC { |
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
在需要关闭授权页面的地方调用极验关闭授权页面接口
func dismissAuthVC(_ sender: UIButton) { |
6、判断预取号结果是否有效
方法原型
/** |
接口作用
判断预取号结果是否有效
调用时机
- 调用
requestTokenWithCompletion
时,判断是否需要先调用preGetTokenWithCompletion
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
判断预取号结果是否有效
// 根据SDK的方法判断当前预取号结果是否有效,若当前预取号结果有效,则直接调用requestTokenWithViewController方法拉起授权页面,否则,先调用预取号方法进行预取号,预取号成功后再拉起授权页面 |
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
判断预取号结果是否有效
// 根据SDK的方法判断当前预取号结果是否有效,若当前预取号结果有效,则直接调用requestTokenWithViewController方法拉起授权页面,否则,先调用预取号方法进行预取号,预取号成功后再拉起授权页面 |
7、设置请求超时时间
方法原型
/** |
接口作用
分开设置预取号和取号请求超时时间
调用时机
- 调用
registerWithAppID
前先设置请求超时时间
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
分别设置预取号和取号请求超时时长
[OneLogin setRequestTimeout:10 requestTokenTimeout:10];
[OneLogin registerWithAppID:@"您的appID"];
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
分别设置预取号和取号请求超时时长
// 进入授权页面
OneLogin.setRequestTimeout(10, requestTokenTimeout: 10)
OneLogin.register(withAppID: "您的appID")
8、更改隐私条款勾选框状态
方法原型
/** |
接口作用
更改隐私条款勾选框状态
调用时机
- 可使用
hintBlock
自定义未勾选隐私条款勾选框点击授权按钮的操作,然后调用此接口勾选条款
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
更改隐私条款勾选框状态
[OneLogin setProtocolCheckState:YES];
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
更改隐私条款勾选框状态
OneLogin.setProtocolCheckState(true)
9、开始取号
方法原型
/** |
接口作用
开始取号
调用时机
- 使用
customAuthActionBlock
返回YES
自定义授权页面登录按钮点击事件,点击授权按钮后先接入其他验证方式,在此加入接入方的逻辑,验证通过后调用startRequestToken
方法继续执行取号操作
示例代码
ObjC:
导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
开始取号
[OneLogin startRequestToken];
Swift:
创建混编桥接头文件并导入极验 SDK 头文件
#import <OneLoginSDK/OneLoginSDK.h>
开始取号
OneLogin.startRequestToken()