一键登录(iOS)
安装
SDK集成
cocoaPods 集成
Podfile
文件platform :ios, '9.0'
source 'https://github.com/CocoaPods/Specs.git'
target 'App' do
pod 'AvatarCloud_Login'
end
pod install
pod repo update
手动集成
AvatarCloudSDK.framework
和资源文件AvatarCloudSDK.bundle
复制到业务工程使用
配置
clientId
和 clientSecret
请在官网申请初始化
#import <AvatarCloudSDK/AvatarCloudSDK.h>
[AvatarCloudSDKManager initWithClient_id:@"clientId" client_secret:@"clientSecret"];
一键登录功能
#### 取号请求
//取号
[[ACLoginManager sharedInstance] getPhoneNumberCompletion:^(NSDictionary * _Nonnull result) {
NSLog(@"getPhoneNumberCompletion %@", result);
NSString *resultCode = result[@"resultCode"];
if ([ACLoginCodeSuccess isEqualToStringresultCode])
{
NSLog(@"预取号成功");
} else {
NSLog(@"预取号失败");
}
}];
#### 授权请求
#import <AvatarCloudSDK/AvatarCloudSDK.h>
/*
一键登录,获取到的token,可传给移动认证服务端获取完整手机号
@param controller 唤起自定义授权页的容器
@param model 需要配置的Model属性
@param completion 回调
*/
[[ACLoginManager sharedInstance] getAuthorizationWithController:'ViewController' model:'ACLCustomModel' complete:^(id _Nonnull sender) {
NSLog(@"custom login %@", sender);
NSString *code = [sender objectForKey:@"resultCode"];
if ([ACLoginCodeSuccess isEqualToString:code]) {
[self authLoginSuccess];
} else if ([ACLoginCodeClickCancel isEqualToString:code]) {
weakSelf.bgView.hidden = YES;
[self authLoginExit];
} else if ([ACLoginCodeClickChangeBtn isEqualToString:code]) {
[self authLoginChange];
}
}];
//关闭授权界面 flag 动画开关
[[ACLoginManager sharedInstance] dismissViewControllerAnimated:YES completion:^{
weakSelf.bgView.hidden = YES;
}];
授权响应参数:
字段 | 类型 | 含义 |
---|---|---|
resultCode | NSString | 接口返回码。 具体返回码见 SDK 返回码 |
desc | NSString | 返回描述 |
token | NSString | 成功时返回:临时凭证,token 有效期 2min,一次有效;同一 用户(手机号)10 分钟内获取 token 且未使用的数量不超过 30个 |
operatorType | NSString | 运营商类型 |
scripExpiresIn | NSString | 成功时返回。表示 scrip 有效期,单位:秒。注:仅移动号码返回,电信联通在这里不会生成缓存,scripExpiresIn=0 |
tokenExpiresIn | NSString | 成功时返回。表示 token 有效期,单位:秒 |
traceId | NSString | 用于定位 SDK 问题 |
#### 自定义授权界面
1、开发者不得通过任何技术手段,破解授权页,或将授权页面的号码栏、隐私 栏、品牌露出内容隐藏、覆盖。
2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权。
3、对于接入移动认证 SDK 并上线的应用,我方会对上线的应用授权页面做审查, 如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。
自定义model
ACLCustomModel *customModel = [ACLCustomModel new];
/** 授权页弹出方向,默认ACLPresentationDirectionBottom */
customModel.presentDirection = ACLPresentationDirectionBottom;
/** 授权页customView展现形式 */
customModel.contentViewType = ACLContentViewFullScreen;
/** 自定义logo frmae */
customModel.logoFrameBlock = ^CGRect(CGSize screenSize, CGSize superViewSize, CGRect frame) {
frame = CGRectMake(100, 100, 80, 80);
return frame;
};
/** 自定义登录按钮 */
customModel.loginBtnText = [[NSAttributedString alloc] initWithString:@"本机号码一键登录" attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor] , NSFontAttributeName:[UIFont systemFontOfSize:15]}];
/** 自定义协议及链接 */
customModel.privacyLinkArray = @[@[@"用户协议", @"https://xxx.com"], @[@"隐私政策", @"https://xxx.com"]];
/** 自定义控件添加 */
[austomModel setCustomViewBlock:^(UIView * _Nonnull superCustomView) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(superCustomView.width - 44, 10, 20, 20)];
view.backgroundColor = [UIColor redColor];
[superCustomView addSubview:view];
}];
ACLCustomModel 配置元素说明:
属性 | 类型 | 说明 |
---|---|---|
customViewBlock | UIView *superCustomView | 设置授权页自定义控件添加 |
presentDirection | ACLPresentationDirection | 授权页面推出动画效果 |
isPresentAnimated | BOOL | 授权页面是否需要弹出动画,默认为YES |
contentViewType | ACLContentViewType | customView 展现形式。0默认全屏,1弹窗(屏幕居中),2底部弹窗 |
返回按钮 | ||
backBtnImage | UIImage | 导航栏返回图片 |
backBtnIsHidden | BOOL | 是否隐藏授权页返回按钮,默认不隐藏 |
backBtnFrameBlock | ACLBuildFrameBlock | return frame; 构建返回按钮的的frame |
logo | ||
logoImage | UIImage | 设置一张图片 |
logoIsHidden | BOOL | 是否隐藏授权页logo,默认不隐藏 |
logoFrameBlock | ACLBuildFrameBlock | return frame; 构建logo图片的的frame |
slogan | ||
sloganText | NSAttributedString | 设置slogan的富文本属性(字体大小、颜色、文案内容) |
sloganIsHidden | BOOL | 是否隐藏授权页slogan,默认不隐藏 |
sloganFrameBlock | ACLBuildFrameBlock | return frame; 构建slogan的的frame |
号码 | ||
numberColor | UIColor | 号码颜色 |
numberFont | UIFont | 号码字体大小设置,大小小于16则不生效 |
numberOffsetY | CGFloat | 号码相对contengView顶部的Y轴距离,不设置则按默认处理 |
numberOffsetX | CGFloat | 号码相对屏幕中线的X轴偏移距离,不设置则按默认处理,默认为0水平居中 |
登录 | ||
loginBtnText | NSAttributedString | 设置登录按钮的富文本属性(字体大小、颜色、文案内容) |
loginBtnBgImgs | NSArray | 设置授权登录按钮三种状态的图片数组,数组顺序为:[0]激活状态的图片;[1] 失效状态的图片;[2] 高亮状态的图片 |
loginBtnFrameBlock | ACLBuildFrameBlock | return frame; 构建登录按钮的frame |
切换按钮 | ||
changeBtnTitle | NSAttributedString | 设置切换按钮的富文本属性(字体大小、颜色、文案内容) |
changeBtnIsHidden | BOOL | 是否隐藏授权页切换按钮,默认不隐藏 |
changeBtnFrameBlock | ACLBuildFrameBlock | return frame; 构建切换按钮的frame |
协议 | ||
checkBoxImages | NSArray | checkBox图片组,[uncheckedImg,checkedImg] |
checkBoxIsChecked | BOOL | checkBox是否勾选,默认NO |
checkBoxWH | CGFloat | 复选框大小(只能正方形)必须大于12 |
privacySymbol | BOOL | 隐私条款默认协议是否开启书名号 |
privacyLinkArray | NSArray | [ [协议名称,协议Url],[协议名称,协议Url], ...] 注:协议名称不能相同 |
privacyColors | NSArray | 协议内容颜色数组,[非点击文案颜色,点击文案颜色] |
privacyPreText | NSString | 协议整体文案,前缀部分文案 |
privacySufText | NSString | 协议整体文案,后缀部分文案 |
privacyFont | UIFont | 协议整体文案字体大小,小于12.0不生效 |
privacyFrameBlock | ACLBuildFrameBlock | return frame; 构建协议整体的frame |
checkTipText | NSString | 默认文案:“请勾选登录协议”,如果为空,则点击时无提示。该属性被合法赋值(非空,且最大长度为100的字符串。 |
webNavBackImage | UIImage | web协议界面导航栏返回图片 |
webNavColor | UIColor | web协议界面导航标题栏颜色 |
webNavTitleAttrs | NSDictionary | web协议界面导航标题字体属性设置 默认值:@{NSForegroundColorAttributeName: [UIColor blackColor], NSFontAttributeName: [UIFont systemFontOfSize:16]} |
返回码说明
返回码 | 返回码描述 |
---|---|
103000 | 成功 |
103101 | 请求签名错误(若发生在客户端,可能是 appkey 传错,可检查是否跟 appsecret 弄混,或者有空格。若发生在服务端接口,需要检查验签方 式是 MD5 还是 RSA,如果是 MD5,则排查 signType 字段,若为 appsecret,需确认是否误用了 appkey 生签。如果是 RSA,需要检查使 用的私钥跟报备的公钥是否对应和报文拼接是否符合文档要求。) |
103102 | 包签名错误(社区填写的 appid 和对应的包名包签名必须一致) |
103111 | 网关 IP 错误(检查是否开了 vpn 或者境外 ip) |
103119 | appid 不存在(检查传的 appid 是否正确或是否有空格) |
103211 | 其他错误,(常见于报文格式不对,先请检查是否符合这三个要求: a、json 形式的报文交互必须是标准的 json 格式;b、发送时请设置 content type 为 application/json;c、参数类型都是 String。如有需要请 联系 qq 群 609994083 内的移动认证开发) |
103902 | scrip 失效(客户端高频调用请求 token 接口) |
103911 | token 请求过于频繁,10 分钟内获取 token 且未使用的数量不超过 30 个 |
103273 | 预取号联通重定向 |
105002 | 移动取号失败(一般是物联网卡) |
105003 | 电信取号失败 |
105021 | 当天已达取号限额 |
105302 | appid 不在白名单 |
105313 | 非法请求 |
200020 | 取消登录 |
200021 | 数据解析异常(一般是卡欠费) |
200022 | 无网络 |
200023 | 请求超时 |
200025 | 其他错误(socket、系统未授权数据蜂窝权限等,如需要协助,请加 入 qq 群发问) |
200027 | 未开启数据网络或网络不稳定 |
200028 | 网络异常 |
200038 | 异网取号网络请求失败 |
200048 | 用户未安装 sim 卡 |
200050 | EOF 异常 |
200061 | 授权页面异常 |
200064 | 服务端返回数据异常 |
200072 | CA 根证书校验失败 |
200080 | 本机号码校验仅支持移动手机号 |
200082 | 服务器繁忙 |
200086 | ppLocation 为空 |
200087 | 授权页成功调起 |
200096 | 当前网络不支持取号 |
300000 | 点击返回,⽤户取消一键登录 |
300001 | 点击切换按钮,⽤户取消免密登录 |
300002 | 点击登录按钮事件 |
修改于 2022-08-08 02:24:54