数美号码认证 iOS SDK 接入文档#

一、接入说明#

开发环境:

  • 最低部署版本:iOS 9.0及以上。
  • Xcode开发工具:12.0及以上。

集成方式:

  • SmAuth.xcframework拖拽到Xcode工程内(需要勾选Copy items if needed选项)。
  • 点击项目target -> General -> Frameworks,Libraries,and Embedded Content -> SmAuth.xcframework,在Embed选项下,选择Embed & Sign

一键登录使用步骤:

  • 导入头文件
#import <SmAuth/SmAuth.h>
  • 启动SDK
// AppId
[[SmAuthHelper shareInstance] registerWithAppId:@"xxxxx"];
// 开启日志
[[SmAuthHelper shareInstance] consolePrintLoggerEnable:YES];
// 设置超时
[[SmAuthHelper shareInstance] setTimeoutInterval:6000];
  • 预加载授权页(取号)
- (void)preLoadLoginAuthorizePageWithCompletion:(void(^)(NSError * _Nullable))completion;
  • 加载授权页
- (void)loadLoginAuthorizePageWithViewConfig:(UAuthViewConfig *)viewConfig completion:(void (^)(NSError *error, NSString *token))completion;
  • 关闭授权页
- (void)unloadLoginAuthorizePageAnimated:(BOOL)animated completion:(void (^_Nullable)(void))completion;

本机号码验证使用步骤:

  • 预加载授权页(取号)
- (void)preLoadLoginAuthorizePageWithCompletion:(void(^)(NSError * _Nullable))completion;
  • 手机号码检测(获取验证Token)
- (void)verifyPhoneNumberCompletion:(void(^)(NSError * _Nullable, NSString * _Nullable))completion;

二、SDK接口说明#

2.1 启动SDK#

接口描述

启动SDK。

接口示例

[[SmAuthHelper shareInstance] registerWithAppId:@"xxxxx"];

参数说明

appId: 数美号码认证提供的 ID。


2.2 预加载授权页(取号)#

接口描述

预加载授权页,使用前应先判断运营商信息、网络信息等。

接口示例

- (void)preLoadLoginAuthorizePageWithCompletion:(void(^)(NSError * _Nullable))completion;

回调说明

错误码:200027-->蜂窝网络未开启;-10003-->蜂窝网络权限未开启;其它错误码参照运营商错误码列表。


2.3 加载授权页#

接口描述

拉取授权页。

接口示例

- (void)loadLoginAuthorizePageWithViewConfig:(UAuthViewConfig *)viewConfig completion:(void (^)(NSError *error, NSString *token))completion;

参数说明

viewConfig: 授权页配置model。

回调说明

错误码: 参照运营商错误码列表。 token: 取号token,使用该token去开发者应用后台换取完整手机号码。


2.4 关闭授权页#

接口描述

关闭授权页。

接口示例

- (void)unloadLoginAuthorizePageAnimated:(BOOL)animated completion:(void (^_Nullable)(void))completion;

参数说明

animated: 是否开启动画。


2.5 本机号码校验Token获取#

接口描述

本机号码校验Token获取。

接口示例

- (void)verifyPhoneNumberCompletion:(void(^)(NSError * _Nullable, NSString * _Nullable))completion;

回调说明

错误码: 参照运营商错误码列表。 token: 本机号码验证token,使用该token去开发者应用后台验证是否是本机手机号码。


2.6 日志打印#

接口描述

日志打印。

接口示例

- (void)consolePrintLoggerEnable:(BOOL)enable;

参数说明

enable: 是否开启控制台日志打印。


2.7 超时设置#

接口描述

超时设置。

接口示例

- (void)setTimeoutInterval:(NSTimeInterval)interval;

参数说明

interval: 单位毫秒,建议设置为8000毫秒。


2.8 运营商类型#

接口描述

运营商类型。

接口示例

- (SmCarrierType)carrierType;

参数说明

SmCarrierType:

SmCarrierTypeUnknown-->未知;

SmCarrierTypeMobile-->中国移动;

SmCarrierTypeUnicome-->中国联通;

SmCarrierTypeTelecom-->中国电信。


2.9 连接网络类型#

接口描述

当前连接网络类型。

接口示例

- (SmNetworkType)networkType;

参数说明

SmNetworkType:

SmNetworkTypeUnknown-->未知

SmNetworkTypeNotReachable-->无网络

SmNetworkTypeCellular-->数据流量

SmNetworkTypeWifi-->WiFi

SmNetworkTypeCellularAndWifi-->数据流量+WiFi


2.10 SDK版本#

接口描述

当前SDK版本。

接口示例

- (NSString *)getSDKVersion;

三、其他注意事项#

其它接口的使用方法,请参考Demo中的示例。

四、运营商SDK错误码#

在调用号码认证服务一键登录和本机号码校验功能的接口时,会返回运营商对应接口的错误码。常见接口错误码、错误描述,可参考下述

中国移动#

状态码状态码描述
103000成功
102101无网络
102102网络异常(网络请求出错,一般出现在网络安全策略限制了不能使用http、设备开启了代理或连接的WiFi有网络链接安全策略限制的场景,建议结合SDK日志具体分析)
102103未开启数据网络
102121用户取消登录
102203输入参数错误
102223数据解析异常
102507登录超时(授权页点登录按钮时)
102508数据网络切换失败
103101请求签名错误(请求签名错误(若发生在客户端,可能是appkey传错,可检查是否跟appsecret弄混,或者有空格。若发生在服务端接口,需要检查验签方式是MD5还是RSA,如果是MD5,则排查signType字段,若为appsecret,需确认是否误用了appkey生签。如果是RSA,需要检查使用的私钥跟报备的公钥是否对应和报文拼接是否符合文档要求。)
103102包签名Bundle ID错误(报备的和实际使用的对不上)
103103用户不存在
103111网关IP错误(检查是否开了vpn或者境外ip)
103119AppID不存在。(检查传的appid是否正确或是否有空格)
103211其他错误(常见于报文格式不对,先请检查是否符合这三个要求:a、json形式的报文交互必须是标准的json格式;b、发送时请设置content type为application/json;c、参数类型都是String
103412无效的请求有加密方式错误、非JSON格式和空请求等
103414参数校验异常
103511服务器IP白名单校验失败
103811Token为空
103902短时间内重复登录,造成script失效
103911Token请求过于频繁,10分钟内获取Token且未使用的数量不超过30个
104201Token重复校验失败、失效或不存在
105002移动取号失败(一般是物联网卡)
105013不支持联通取号
105018使用了本机号码校验的Token获取号码,导致Token权限不足
105019应用未授权
105021已达当天取号限额
105302AppID不在白名单
105313非法请求
200002手机未安装sim卡
200005用户未授权(READ_PHONE_STATE)
200006用户未授权(SEND_SMS)
200007authType仅使用短信验证码认证
2000081. authType参数为空;2. authType参数不合法;
200009应用合法性校验失败(包名包签名未填写正确)
200010无法识别SIM卡或没有SIM卡(Android)
200012取号失败,跳短信验证码登录
200013短信上行发送短信失败(短信上行)
200014手机号码格式错误(短验)
200015短信验证码格式错误
200016更新KS失败
200017非移动卡不支持短信上行
200018不支持网关登录
200019不支持短信验证码登录
200020用户取消登录
200021数据解析异常
200022无网络
200023请求超时
200024数据网络切换失败
200025位置错误(一般是线程捕获异常、socket、系统未授权移动数据网络权限等,请提工单联系工程师)
200026输入参数错误。
200027未开启移动数据网络或网络不稳定
200028网络请求出错
200029请求出错,上次请求未完成
200030没有启动参数
200031生成token失败
200032KS缓存不存在
200033复用中间件获取Token失败
200034预取号token失效
200035协商ks失败
200036预取号失败
200037获取不到openid
200038异网取号网络请求失败
200039异网取号网关取号失败
200040UI资源加载异常
200042授权页弹出异常
200048用户未安装SIM卡
200050EOF异常
200061授权页面异常
200064服务端返回数据异常
200072CA根证书校验失败
200082服务器繁忙
200086ppLocation为空
200087仅用于监听授权页成功拉起
200096当前网络不支持取号

中国电信#

状态码状态码描述
0请求成功
-64Permission-denied(无权限访问)
-65API-request-rates-Exceed-Limitations(调用接口超限)
-10001取号失败,mdn为空
-10002参数错误
-10003解密失败
-10004IP受限
-10005异网取号回调参数异常
-10006mdn取号失败,且属于电信网络
-10007重定向到异网取号
-10008超过预设取号阈值
-10009时间戳过期
-10013Perator_unsupported,提工单联系工程师
-20005Sign-invalid(签名错误)
-20006应用不存在
-20007公钥数据不存在
-20100内部解析错误
-20102加密参数解析失败
-30001时间戳非法
-30003topClass-invalid,topclass无效
51002参数为空
51114无法获取手机号数据
-8001网络异常,请求失败
-8002请求参数错误
-8003请求超时
-8004移动数据网络未开启
-8010无网络连接(网络错误)
-720001Wi-Fi切换4G请求异常
-720002Wi-Fi切换4G超时
80000请求超时
80001网络连接失败、网络链接已中断、Invalid argument、目前不允许数据连接
80002响应码错误404
80003网络无连接
80005socket超时异常
80007IO异常
80008No route to host
80009Nodename nor servname provided, or not known
80010Socket closed by remote peer
80800Wi-Fi切换超时
80801Wi-Fi切换异常
-9999网络故障(networkauth-fail)
-720001切换异常,切换流量卡时网络不稳定
-720002切换异常超时

中国联通#

状态码状态码描述
0表示请求成功
-10008JSON转换失败
1,请求超时请求超时
1,私网IP查找号码失败私网IP查找号码失败
1,私网IP校验错误私网IP校验错误
1,源IP鉴权失败源IP鉴权失败
1,获取鉴权信息失败获取鉴权信息失败
1,获得的手机授权码失败一般是由于请求SDK超时导致的失败
1,网关取号失败网关取号失败
1,网络请求失败网络请求失败
1,验签失败签名校验失败
1,传入code和AppID不匹配传入code和AppID不匹配
1,似乎已断开与互联网的链接网络不稳定导致连接断开
1,connect address error连接地址错误,一般是由于超时导致失败
1,select socket error选择socket错误
1,handshake failed握手失败
1,decode ret_url failURL解码失败
1,connect error连接错误
2,请求超时接口请求耗时超过timeout设定的值

在线咨询