Android一键登录
1. 概述
- 网络取号时请务必开启手机流量
- 电信只支持4G网络取号
- 移动, 联通支持4G, 3G, 2G网络取号,但在非4G网络情况下容易取号失败
- 针对双卡双待手机只取当前流量卡号
- SDK包含一键登录和本机号码校验两个不同的功能,使用场景不一样,无需一起使用。
- 当前版本:1.2.1 (新增 5.2.17 设置多个开发者隐私条款)
- 下载SDK后进行解压,解压后获取: RLOklSdk.x.x.x.arr
2. Demo快速体验
- DEMO下载
- 确保已在容联服务端开通并申请了一键登录服务,获取到了相应的appID(即子账号Id)。
- 替换 build.gradle(app) 文件中 APP_ID 的值为申请的appID,并确保此appID和应用包名相对应。
3. 接入SDK的工作配置
3.1 前期准备
- 确保您的终端设备已经开启了4G网络。
- 确保已经在容联服务端开通了一键登录服务并创建了对应的账号。
3.2 环境要求
- 建议使用Android Studio2.3及以上版本。
- JAVA 编译版本 JDK 1.7 及以上版本。
- sdk支持版本:Android4.0以上。
3.3 导入sdk
- 将解压后的RLOklSdk.x.x.x.arr文件导入您工程下的libs目录下(目前仅支持手动导入)。arr版本号以实际版本为准;
- 在项目的build.gradle下添加如下代码:
- repositories {
- flatDir {
- dirs 'libs'
- }
- }
- 手动将aar包添加依赖:
- implementation(name: 'RLOKlSdk.x.x.x', ext: 'aar')
3.4 配置工程
3.4.1 权限配置
- <!-- 添加权限 -->
- <!-- 允许应用程序联网,用于访问网关和认证服务器 -->
- //允许程序访问WiFi网络状态信息
- <uses-permission android:name="android.permission.INTERNET" />
- //获取网络状态,判断是否数据、wifi等
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- //允许程序改变网络连接状态
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
- />
- //获取imsi用于判断双卡和换卡
- <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"
- />
- //获取imsi用于判断双卡和换卡
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <!-- 允许应用读写用户的外部存储器-->
- <uses-permission
- android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
- />
- SDK 的权限声明与application同级,因此要放到AndroidManifest.xml清单文件的application节点外。
- 文档仅提供了几种可选权限,开发者如需使用其他权限,可以参考Android相关文档根据自己的应用添加所需权限。
3.4.2 SDK核心配置
- //以下是配置授权页 如果在只需号码验证功能可不配置
- <activity
- android:name="com.cloopen.okl.sdk.view.CmccLoginActivity"
- android:configChanges="keyboardHidden|orientation|screenSize"
- android:launchMode="singleTop"
- android:screenOrientation="portrait" />
- <activity
- android:name="com.cloopen.okl.sdk.view.CuccLoginActivity"
- android:configChanges="keyboardHidden|orientation|screenSize"
- android:launchMode="singleTop"
- android:screenOrientation="portrait" />
- <activity
- android:name="cn.com.chinatelecom.account.sdk.ui.AuthActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:enabled="true"
- android:exported="false"
- android:launchMode="singleTop"
- android:screenOrientation="portrait" />
- <activity
- android:name="cn.com.chinatelecom.account.sdk.ui.MiniAuthActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:exported="false"
- android:launchMode="singleTop"
- android:screenOrientation="portrait" />
- <activity-alias
- android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
- android:configChanges="keyboardHidden|orientation|screenSize"
- android:launchMode="singleTop"
- android:screenOrientation="portrait"
- android:targetActivity="com.cloopen.okl.sdk.view.CmccLoginActivity" />
- <activity-alias
- android:name="com.unicom.xiaowo.account.shield.ui.LoginActivity"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:launchMode="standard"
- android:screenOrientation="portrait"
- android:targetActivity="com.cloopen.okl.sdk.view.CuccLoginActivity" />
- <activity
- android:name="com.cloopen.okl.sdk.view.OneLoginWebActivity"
- android:exported="false"
- android:launchMode="singleTop"
- android:screenOrientation="portrait" />
- <activity-alias
- android:name="cn.com.chinatelecom.account.sdk.ui.PrivacyWebviewActivity"
- android:exported="false"
- android:screenOrientation="portrait"
- android:targetActivity="com.cloopen.okl.sdk.view.OneLoginWebActivity" />
3.4.3 配置相应的签名
3.4.4 混淆配置规则
- -dontwarn com.cloopen.**
- -keep class com.cloopen.**{*;}
4. SDK接口说明
4.1 初始化
- 使用一键登录功能前,必须使用开发者自己的 appID 进行初始化SDK
- 初始化前也可以配置SDKdebug开关打印信息
- /* init: 初始化接口
- * 参数:
- * context - Android应用上下文对象
- * appId - 容联服务端申请的appId
- * initListener - SDK初始化结果回调接口,InitListener
- *
- * 说明:示例在应用程序创建时初始化 SDK引用的是Application的上下文,
- * 开发者可根据开发需要调整。
- */
- public void init(Context context, String appId, InitListener initListener)
- //SDK初始化(建议放在Application的onCreate方法中执行)
- OneKeyLoginHelper.getInstance().init(this, BuildConfig.APP_ID,new InitListener() {
- @Override
- public void initStatus(String code , String data) {
- Log.e(TAG,"初始化结果,code:"+code +",data:"+data);
- }
- });
- code:000000,
- data:
- {"statusCode":"000000",
- "statusMsg":"success",
- "msgId":"cache"
- }
| 参数 | 类型 | 约束 | 说明 |
context | Context | 必选 | 应用上下文环境 |
appId | String | 必选 | 开发者在注册应用的时候由容联服务端申请的appId(即子账号Id) |
initListener | String | 必选 | InitListener为回调监听器,是一个java接口,需要调用者 自己实现;InitListener是接口中的初始化回调接口, initStatus是该接口中唯一的抽象方法,即void initStatus(String code , String data) |
| 参数 | 类型 | 约束 | 说明 |
code | String | 必选 | 外层返回码,000000表示初始化成功,其他返回码具体解释见 文档第7部分返回码章节 |
| statusCode | String | 必选 | 内层返回码,000000表示成功,其他返回码具体解释见 文档第7部分返回码章节 |
statusMsg | String | 必选 | 返回码描述说明 |
msgId | String | 必选 | 用于排查问题,如返回cache初始化成功 |
4.2 预取号
- 预取当前运营商网络号码信息,该方法会缓存取号信息,建议在 APP 登录页初始化时调用,提高 一键登录效率。
- 调用reqPreLogin接口进行预取号,只有预取号成功才能调用sdk 的 requestToken即可拿到登录的token。
- /* reqPreLogin: 预取号接口
- * 参数:
- * timeout - 获取预取号超时时间 单位ms
- * preLoginListener - 预取号回调监听,preLoginStatus是该监听唯一的
- 抽象方法
- */
- public void reqPreLogin(int timeout, PreLoginListener preLoginListener)
- //预选号
- OneKeyLoginHelper.getInstance().reqPreLogin(10000,new
- PreLoginListener() {
- @Override
- public void preLoginStatus(String code, String data) {
- Log.e(TAG,"preLoginStatus,code:"+code +",data:"+data);
- }
- });
- code:000000,
- data:
- {"statusCode":"000000",
- "statusMsg":"success"
- }
| 参数 | 类型 | 约束 | 说明 |
timeout | int | 必选 | 获取预取号超时时间 单位ms |
preLoginListener | preLoginListener | 必选 | PreLoginListener为回调监听器,是一个java 接口,需要调用者自己实现; PreLoginListener是接口中的预取号回调接 口,preLoginStatus是该接口中唯一的抽象方 法,即void preLoginStatus(String code, String data) |
| 参数 | 类型 | 约束 | 说明 |
code | String | 必选 | 外层返回码,000000表示初始化成功,其他返回码具体解释见 文档第7部分返回码章节 |
| statusCode | String | 必选 | 内层返回码,000000表示成功,其他返回码具体解释见 文档第7部分返回码章节 |
statusMsg | String | 必选 | 返回码描述说明 |
4.3 拉起授权页
- 如果不设置setAuthUIConfifig方法则展示默认的全屏
- 如果需要全屏自定义UI以及弹窗,需要在调用setAuthUIConfifig授权页之前设置
- 具体设置请参照 本页 - 授权页面设计条目
- /* setAuthUIConfig: 设置自定义全屏弹窗
- * 参数:
- * authUIConfig - 授权页配置
- */
- public void setAuthUIConfig(AuthUIConfig authUIConfig)
- /* openAuth: 拉起授权
- * 参数:
- * context - 上下文
- * loginResultListener -授权回调
- */
- public void openAuth(Context context, LoginResultListener
- loginResultListener)
- //设置自定义全屏弹窗
- OneKeyLoginHelper.getInstance().setAuthUIConfig(authUIConfig);
- //拉起授权
- OneKeyLoginHelper.getInstance().openAuth(context,new
- LoginResultListener() {
- //获取到token
- @Override
- public void loginResult(String code, String data) {
- Log.e(TAG,"login result,code:"+code + ",data:"+data);
- }
- });
- code:000000,
- data:
- {"resultCode":"0",
- "token":"xxxxxxxxxxxxxxxxxxxxxxxxx"
- }
| 参数 | 类型 | 约束 | 说明 |
context | context | 必选 | 应用上下文环境 |
| loginResultListener | loginResultListener | 必选 | LoginResultListener为回调监听器,是一个 java接口,需要调用者自己实现; LoginResultListener是接口中的关闭授权页 回调接口,loginResult是该接口中唯一的抽 象方法,即void loginResult(String code, String data) |
| 参数 | 类型 | 约束 | 说明 |
code | String | 必选 | 外层返回码,000000表示初始化成功,其他返回码具体解释见 文档第7部分返回码章节 |
| resultCode | String | 必选 | 内层返回码,具体响应码解释见 文档第7部分返回码章节(包含三网返回码) |
| resultMsg | String | 必选 | 返回码描述说明 |
| token | String | 必选 | 登录成功获取登录临时凭证,用于获取信息接口,失败token为空 |
4.4 退出授权页
- /* quitAuthActivity: 退出授权页
- */
- public void quitAuthActivity()
- //退出授权页
- OneKeyLoginHelper.getInstance().quitAuthActivity();
4.5 日志开关接口
- /* setDebug: 配置debug打印开关关接口
- * 参数:
- * flag - true 打印 false不打印
- */
- public void setDebug(Boolean flag)
- // SDK配置debug打印开关
- OneKeyLoginHelper.getInstance().setDebug(true);
| 参数 | 类型 | 约束 | 说明 |
| flag | Boolean | 必选 | 配置debug是否打印,true 打印 false不打印 |
4.6 本机号码验证
- /* phoneAuth: 本机号码验证
- * 参数:
- * phoneAuthListener 验证回调
- */
- public void phoneAuth(PhoneAuthListener phoneAuthListener)
- // 本机号码验证
- OneKeyLoginHelper.getInstance().phoneAuth(new PhoneAuthListener(){
- @Override
- public void phoneAuthResult(String code, final String data) {
- Log.e(TAG,"Token of phone auth,code:"+code + ",data:"+data);
- }
- });
- code:000000,
- data:
- {"resultCode":"0",
- "token":"xxxxxxxxxxxxxxxxxxxxxxxxx",
- "operatorType":2
- }
| 参数 | 类型 | 约束 | 说明 |
| phoneAuthListener | phoneAuthListener | 必选 | PhoneAuthListener为回调监听器,是一个java接 口,需要调用者自己实现;PhoneAuthListener是 接口中的号码验证回调接口,phoneAuthResult 是该接口中唯一的抽象方法,即void phoneAuthResult(String code, String data) |
| 参数 | 类型 | 约束 | 说明 |
code | String | 必选 | 外层返回码,000000表示初始化成功,具体响应码见第7部分 SDK返回码 |
| resultCode | String | 必选 | 内层返回码,具体响应码见第7部分 SDK返回码(包含三网返回码) |
| token | String | 必选 | 登录成功获取验证临时凭证,用于与服务器进行校验,失败token为 空 |
| operatorType | String | 必选 | 当前校验客户端类型 1-移动,2-联通,3-电信 |
5. 授权页面设计
5.1 授权页说明
5.2 拉起授权一键登录全屏/弹窗之前设置自定义UI
- OneKeyLoginHelper.getInstance().setAuthUIConfig(AuthUIConfig
- configBuilder);
| 参数 | 类型 | 约束 | 说明 |
| AuthUIConfig | AuthUIConfig | 必选 | AuthUIConfig为设置授权页配置,具体设置可参考demo使用 |
- AuthUIConfig.Builder configBuilder= new AuthUIConfig.Builder().build();
5.2.1 设置状态栏颜色,字体颜色
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| statusBarColor | int | 必选 | 自定义状态栏背景颜色 | 0 |
| navigationBarColor | int | 必选 | 自定义底部导航栏背景颜色(没有底部导航栏的 则无效) | 0 |
| isLightColor | boolean | 必选 | 设置状态栏内容的颜色(只能黑白),true为黑 色,false为白色 | false |
5.2.2 设置标题栏布局
- 授权页与协议页面共用
| 参数 | 类型 | 约束 | 说明 | 默认值 |
navColor | int | 必选 | 自定义状态栏背景颜色 | 0xFF3973FF |
| authNavHeight | int | 必选 | 自定义底部导航栏背景颜色(没有底部导航栏的则无效) | 49 |
5.2.3 设置标题栏返回按钮相关 (授权页返回相关)
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| navReturnImgPath | String | 必选 | 返回按钮图片 | okl_left_return |
| returnImgWidth | int | 必选 | 返回按钮图片宽度 | 24 |
| returnImgHeight | int | 必选 | 返回按钮图片高度 | 24 |
| returnImgOffsetX | int | 必选 | 返回按钮图片距离屏幕左边X轴偏移量 | 12 |
5.2.4 设置标题栏返回按钮相关 (协议页面返回相关)
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| webReturnImgPath | String | 必选 | 返回按钮图片 | okl_left_return |
| webReturnImgWidth | int | 必选 | 返回按钮图片宽度 | 24 |
| webReturnImgHeight | int | 必选 | 返回按钮图片高度 | 24 |
| webReturnImgOffsetX | int | 必选 | 返回按钮图片距离屏幕左边X轴偏移量 | 12 |
5.2.5 设置标题栏中文字相关
- 授权页与协议页面共用)
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| webReturnImgPath | String | 必选 | 返回按钮图片 | okl_left_return |
| webReturnImgWidth | int | 必选 | 返回按钮图片宽度 | 24 |
| webReturnImgHeight | int | 必选 | 返回按钮图片高度 | 24 |
| webReturnImgOffsetX | int | 必选 | 返回按钮图片距离屏幕左边X轴偏移量 | 12 |
5.2.6 设置logo
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| logoImgPath | String | 必选 | Logo图片 | ccop_one_login_logo |
| logoWidth | int | 必选 | Logo图片宽度 | 71 |
| logoHeight | int | 必选 | Logo图片高度 | 71 |
| logoOffsetY | int | 必选 | logo相对于状态栏下边缘y偏移 | 125 |
5.2.7 设置号码
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| numberColor | int | 必选 | 号码栏字体颜色 | 0xFF3D424C |
| numberSize | int | 必选 | 号码栏字体大小 | 24 |
| numFieldOffsetY | int | 必选 | 号码栏相对于标题栏下边缘y偏移 | 200 |
5.2.8 设置Slogan
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| sloganColor | int | 必选 | Slogan字体颜色 | 0xFFA8A8A8 |
| sloganSize | int | 必选 | Slogan字体大小 | 10 |
| sloganOffsetY | int | 必选 | Slogan相对于标题栏下边缘y偏移 | 382 |
5.2.9 设置登录按钮布局
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| loginImgPath | String | 必选 | 登录按钮背景图片 | ccop_one_login_btn_normal |
| logBtnWidth | int | 必选 | 登录按钮宽度 | 268 |
| logBtnHeight | int | 必选 | 登录按钮高度 | 36 |
| logBtnOffsetY | int | 必选 | 登录按钮相对于标题栏下边缘y偏 移 | 249 |
5.2.10 设置登录按钮文字
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| loginButtonText | String | 必选 | 文字设置 | 一键登录 |
| loginButtonColor | int | 必选 | 文字颜色 | 0xFFFFFFFF |
| logBtnTextSize | int | 必选 | 文字大小 | 15 |
5.2.11 设置其他登录方式
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| switchText | String | 必选 | 其他登录方式文字 | 切换账号 |
| switchColor | int | 必选 | 其他登录方式字体颜色 | 0xFF3973FF |
| switchSize | int | 必选 | 其他登录方式字体大小 | 14 |
| switchAccHidden | boolean | 必选 | 其他登录方式是否隐藏 | false |
| switchAccOffsetY | int | 必选 | 其他登录方式相对于标题栏下边缘y偏移 | 249 |
| loginOtherClick | OtherLoginInterface | 必选 | 设置其他登录方式点击事件 |
5.2.12 设置显示第三方登录点击事件相关
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| isShowOtherLogin | boolean | 必选 | 设置是否显示微信、微 博、QQ登录方式布局 true为显示,false不显示 | false |
| loginSmsClick | OtherLoginInterface | 必选 | 为点击回调监听器,是一个java接口,需 要调用者自己实现 设置qq登录点击事件 | |
| loginWechatClick | OtherLoginInterface | 必选 | 为点击回调监听器,是一个java接口,需 要调用者自己实现 设置微信登录点击事件 | |
| loginWeiboClick | OtherLoginInterface | 必选 | 为点击回调监听器,是一个java接口,需 要调用者自己实现 设置微博登录点击事件 |
5.2.13 设置隐私条款布局
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| privacyOffsetY_B | int | 必选 | 设置隐私条款相对于底部y偏移 | 18 |
5.2.14 设置隐私条款选择框
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| checkedSelectImgPath | String | 必选 | 设置选择框选择器(selector)地址 | ccop_ct_auth_privacy_checkbox |
| privacyState | boolean | 必选 | 选择框是否选中 | false |
5.2.15 设置隐私条款字体
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| baseClauseColor | int | 必选 | 设置隐私条款基础文字颜色 | 0xFFA8A8A8 |
| clauseColor | int | 必选 | 设置隐私条款协议文字颜色 | 0xFF3973FF |
| privacyClauseTextSize | int | 必选 | 设置隐私条款字体大小 | 10 |
5.2.16 设置开发者隐私条款
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| clauseNameOne | String | 必选 | 设置隐私条款名称 | |
| clauseUrlOne | String | 必选 | 设置隐私条款URL |
5.2.17 设置多个开发者隐私条款
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| clauseName | String | 必选 | 设置第一个隐私条款名称 | |
| clauseUrl | String | 必选 | 设置第一个隐私条款URL | |
| clauseNameTwo | String | 必选 | 设置第二个隐私条款名称 | |
| clauseUrlTwo | String | 必选 | 设置第二个隐私条款URL |
5.2.18 设置未同意隐私条款的文字提示
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| privacyUnCheckedToastText | String | 必选 | 设置未同意隐私条款的文字提示 | 请同意服务条款 |
5.2.19 设置隐私协议页面背景图片
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| privacyBGImgPath | String | 必选 | 设置背景图片。放在drawable 文件下 | ccop_one_login_bg |
5.2.20 设置授权页Activity进入动画和退出动画
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| stratActivityTransition | int | 必选 | 设置进入授权页动画(R.anim.xxx) | 系统默认 |
| finishActivityTransition | int | 必选 | 设置关闭授权页动画(R.anim.xxx) | 系统默认 |
5.3 设置弹窗显示
5.3.1 设置授权页使用对话框模式
| 参数 | 类型 | 约束 | 说明 | 默认值 |
| isDialogTheme | boolean | 必选 | 是否使用对话框模式 | false |
| dialogWidth | String | 必选 | 授权页对话框的宽度 | 300 |
| dialogHeight | String | 必选 | 授权页对话框的高度 | 500 |
6. 常见问题
- 初始化失败
- 检查当前手机运营商是否存在并处于有网络环境
- 检查是否配置正确的appID
- 检查清单文件中是否配置相应权限
- 代码编译问题及授权界面显示异常
- 检查当前导入的arr文件是否异常
- 检查配置清单文件中是否配置拉起activity
- Android签名获取指南
- 1、命令行输入以下命令:
- keytool -list -v -keystore C:\xxx\android.keystore.jks
- 2、输入密钥库口令(密码):
- 3、获取证书指纹的MD5值(去掉分隔符:”:”)
- 样例:
- 89D83A.....8G6E5F4B
- 其他问题
- 包签名修改问题?
- 包名和包签名提交后不支持修改,建议直接新建应用
- 包签名不一致会有哪些影响?
- SDK会无法使用
- 账户正常电信预选号失败?
- 检查App下build.gradle是否配置签名文件,同时删除手机项目,clean Project重新运行。
7. 返回码
7.1 容联SDK返回码
| 返回码 | 返回码描述 |
| 000000 | 成功 |
| 000001 | SDK初始化失败 |
| 000002 | SDK未初始化 |
| 000010 | 授权页关闭 |
| 000011 | 切换账号 |
| 000013 | 用户取消登录 |
| 000100 | 应用ID为空 |
| 000101 | 未识别SIM卡 |
| 000102 | 无网络/网络异常 |
| 000103 | 蜂窝煤网络未开启/不稳定 |
| 000104 | 网络请求异常 |
| 000201 | 数据返回异常 |
| 000202 | 解析数据失败 |
| 110001 | 移动预取号失败 |
| 110002 | 移动预取号异常 |
| 110003 | 移动预取号响应异常 |
| 110011 | 移动授权失败 |
| 110021 | 移动验证失败 |
| 120001 | 联通预取号失败 |
| 120002 | 联通预取号异常 |
| 120003 | 联通预取号响应异常 |
| 120011 | 联通授权失败 |
| 120021 | 联通验证失败 |
| 130001 | 电信预取号失败 |
| 130002 | 电信预取号异常 |
| 130003 | 电信预取号响应异常 |
| 130011 | 电信授权失败 |
| 130021 | 电信验证失败 |
| 590000 | 未知错误 |
| 590001 | BODY为空 |
| 590002 | 内部错误 |
| 591001 | 请求参数subAccId为空 |
| 591002 | 请求参数bundleId为空 |
| 591003 | 请求参数appId为空 |
| 591004 | 请求参数token为空 |
| 591005 | 请求参数os为空 |
| 591006 | URI参数accountId为空 |
| 591007 | accountId不合法 |
| 591008 | subAccId不合法 |
| 591009 | 子帐号不属于主账号 |
| 591010 | 主账号状态不可用 |
| 591011 | 子账号状态不可用 |
| 591012 | 账户未在运营商报备 |
| 591013 | 运营商信息为空 |
| 591014 | 请求参数token不合法 |
| 591015 | 帐号不支持号码认证功能 |
| 591016 | 帐号余额不足 |
| 591019 | 请求参数device为空 |
| 591020 | 请求参数version为空 |
| 591022 | 请求参数bundleId不合法 |
| 591023 | 请求参数sign为空 |
| 591024 | 请求参数sign不合法 |
| 591025 | 请求参数random为空 |
| 591033 | 请求IP不在白名单内 |
| 591035 | 运营商应用状态不可用 |
7.2 移动返回码
| 返回码 | 返回码描述 |
| 103000 | 成功 |
| 102507 | 登录超时(授权页点登录按钮时) |
| 103101 | 请求异常 |
| 103102 | 包签名/BundleID错误(社区填写的appid和对应的包名包签名必须一致) |
| 103111 | 错误的运营商请求(可能是用户正在使用代理或者运营商判断失败导致) |
| 103119 | appid不存在 |
| 103211 | 其他错误 |
| 103412 | 无效的请求(1.加密方式错误;2.非json格式;3.空请求等) |
| 103414 | 参数校验异常 |
| 103511 | 服务器ip白名单校验失败 |
| 103811 | token为空 |
| 103902 | scrip失效 |
| 103911 | token请求过于频繁,10分钟内获取token且未使用的数量不超过30个 |
| 104201 | token已失效或不存在(重复校验或失效) |
| 105001 | 联通取号失败 |
| 105002 | 移动取号失败 |
| 105003 | 电信取号失败 |
| 105012 | 不支持电信取号 |
| 105013 | 不支持联通取号 |
| 105018 | token权限不足(使用了本机号码校验的token获取号码) |
| 105021 | 已达当天取号限额 |
| 105302 | appid不在白名单 |
| 105312 | 余量不足(体验版到期或套餐用完) |
| 105313 | 非法请求 |
| 200005 | 用户未授权(READ_PHONE_STATE |
| 200010 | 无法识别sim卡或没有sim卡(android) |
| 200020 | 授权页关闭 |
| 200021 | 数据解析异常 |
| 200022 | 无网络 |
| 200023 | 请求超时 |
| 200024 | 数据网络切换失败 |
| 200025 | 其他错误(socket、系统未授权数据蜂窝权限等) |
| 200027 | 蜂窝(数据网络)未开启或不稳定 |
| 200028 | 网络请求出错 |
| 200038 | 异网取号网络请求失败 |
| 200048 | 用户未安装sim卡 |
| 200050 | EOF异常 |
| 200061 | 授权页面异常 |
| 200064 | 服务端返回数据异常 |
| 200072 | CA根证书校验失败 |
| 200080 | 本机号码校验仅支持移动手机号 |
| 200082 | 服务器繁忙 |
| 200086 | ppLocation为空 |
| 200087 | 仅用于监听授权页成功拉起 |
| 200089 | SDK正在处理 |
| 200096 | 当前网络不支持取号 |
7.3 联通返回码
| 返回码 | 返回码描述 |
| 0 | 处理成功 |
| 100 | 应用未授权 |
| 101 | 应用秘钥错误 |
| 102 | 应用无效 |
| 103 | 应用未授权该IP访问 |
| 104 | 应用访问次数不足 |
| 105 | 应用包名不正确 |
| 106 | 应用状态非法 |
| 107 | 商户状态非法 |
| 108 | 商户请求次数超限额 |
| 200 | tokenId无效 |
| 201 | token已失效 |
| 202 | token未授权该应用访问 |
| 203 | 登录鉴权级别不满足接口鉴权要求 |
| 300 | 接口未开放 |
| 301 | 应用未授权码访问该接口 |
| 302 | IP未授权码访问该接口 |
| 303 | 应用访问接口次数超日限额 |
| 400 | 请求参数为空 |
| 401 | 请求参数不完整 |
| 402 | 请求参数非法 |
| 600 | 请求非法 |
| 1000 | 请求解析错误 |
| 1001 | 请求已失效 |
| 1002 | 验签失败 |
| 1003 | 授权码已过期 |
| 1004 | 加密方式不支持 |
| 1005 | RSA加密错误 |
| 1010 | 服务间访问失败 |
| 1011 | 服务间访问错误 |
| 2004 | 用户不存在 |
| 3001 | unikey |
| 3002 | 跳转异网取号无效 |
| 3003 | 本网执行取号失败,不需要重定向 |
| 3004 | NET取号失败 |
| 3005 | 上网方式为WIFI,无法取号 |
| 3006 | urlencode编码失败 |
| 3007 | 请求认证接口异常 |
| 3008 | imsi取号失败 |
| 3009 | 非联通号码 |
| 3010 | 网关取号错误 |
| 3011 | 源IP鉴权失败 |
| 3012 | 网关取号失败 |
| 3013 | 电信网关取号失败 |
| 3014 | 电信网关取号错误 |
| 3015 | 获取accessCode请求参数失败 |
| 3016 | 移动网关取号失败 |
| 3017 | 移动网关取号错误 |
| 3050 | 取号网关内部错误 |
| 3057 | 网关鉴权码查找号码失败 |
| 3058 | 网关鉴权码格式错误 |
| 3059 | 网关鉴权码已失效 |
| 3060 | 网关账号认证失败 |
| 3061 | 网关取号配额不足 |
| 3062 | IP未授权访问网关 |
| 3063 | 网关并发连接数受限 |
| 3064 | 访问网关参数非法 |
| 3065 | 未授权访问该网关能力 |
| 3066 | 网关服务暂时不可用 |
7.4 电信返回码
| 返回码 | 返回码描述 |
| 0 | 请求成功 |
| -64 | 权限不足 |
| 65 | API-request-rates-Exceed-Limitations(调用接口超限) |
| -10001 | 调用失败 |
| -10002 | 参数错误 |
| -10003 | 解密失败 |
| -10004 | ip 受限 |
| -10005 | 异网取号回调参数异常 |
| -10006 | 授权失败,且属于电信网络 |
| -10007 | 重定向到异网取号 |
| -10008 | 超过预设取号阀值 |
| -10009 | 时间戳过期 |
| -20005 | sign-invalid(签名错误) |
| -20006 | 应用不存在 |
| -20007 | 公钥数据不存在 |
| -20100 | 内部解析错误 |
| -20102 | 加密参数解析失败 |
| -30001 | 时间戳非法 |
| -30003 | topClass 失效 |
| 51002 | 参数为空 |
| 51114 | 无法获取手机号数据 |
| 80000 | 请求超时 |
| 80001 | 请求网络异常 |
| 80002 | 响应码错误 |
| 80003 | 无网络连接 |
| 80004 | 移动网络未开启 |
| 80005 | Socket超时异常 |
| 80006 | 域名解析异常 |
| 80007 | IO异常 |
| 80008 | No route to host |
| 80009 | nodename nor servname provided, or not known |
| 80010 | Socket closed by remote peer |
| 80100 | 登录结果为空 |
| 80101 | 登录结果异常 |
| 80102 | 预登录异常 |
| 80103 | SDK未初始化 |
| 80104 | 未调用预登录接口 |
| 80105 | 加载nib文件异常 |
| 80200 | 用户关闭界面 |
| 80201 | 其他登录方式 |
| 80800 | WIFI切换异常 |
| 80801 | WIFI切换超时 |