手机号一键登录
# 文档说明
本文为您介绍Android客户端如何接入一键登录功能。使用一键登录用户无需输入手机号码,SDK会拉起授权页,用户确认授权后,SDK会获取token,服务端携带token到运营商网关获取用户当前上网使用的号码,最终认证结果返回给App服务端。竹云IDaaS一键登录SDK基于阿里云“号码认证”SDK进行了封装。
# 术语说明
一键登录功能,即号码认证,整合三大运营商特有的数据网关认证能力,升级短信验证码方式,应用于用户注册、登录等场景。
# 流程说明
集成流程说明
- 注册阿里云的私钥和IDaaS服务端的配置参数到IDaaS SDK。
- 终端网络检测,通过阿里云服务端检查网络环境是否可行,若用户开启了4G流量且网络通畅,成功调用IDaaS SDK并拉起授权页面。
- 用户确认授权页面的内容,并同意相关协议。IDaaS SDK会获取授权TOKEN,传递到IDaaS服务端。
- IDaaS服务端使用TOKEN到阿里云服务端获取用户手机号后,发起认证,若认证成功,则返回sessionToken,可保存到App客户端或用于其他;若认证不成功,返回错误码和原因,进行下一步跳转。
# 对接流程
# 准备工作
# 注册阿里云账号
参考阿里云官网开通账号流程 (opens new window)和认证方案管理 (opens new window)。
# 开通号码认证功能
访问号码认证服务产品详情页以企业用户开通购买。
单击立即开通或访问产品控制台。
进入控制台首页,勾选我已阅读并同意《号码认证服务协议》。
单击立即开通,完成产品开通。
登录号码认证服务控制台 (opens new window),在标准版选项卡,下载并解压阿里云Android SDK。
# 添加认证方案
在阿里云“号码认证”服务中添加认证方案,填写当前工程的包名以及对应的签名。
填写完成后点击确定,保存配置,获取密钥保存在app本地,在PlatformConfig中初始化时候使用,参见SDK初始化的步骤。
# 配置IDaaS后台认证源
登录IDaaS企业中心,选择菜单认证-》认证源管理-》内置认证源,点击“本机号码一键登录”。
弹出“本机号码一键登录”配置页面,相关的参数参见下一步骤“从阿里云工作台中获得对应的配置信息”。
配置本机号码一键登录需要的参数配置说明:
参数 参数说明 号码认证服务商 默认阿里云 Access Key ID 填入阿里云创建用户时候产生的AccessKey AccessKey Secret 填入阿里云创建用户时候产生的AccessKey Secret 在阿里云工作台创建用户,勾选下框,参考如何获取AccessKey (opens new window)获取相关参数,将获得的参数配到上一步骤页面中(此步骤为后端接入时需要的相关参数)。
# 获取ClientId
登录IDaaS企业中心,点击【资源】-【应用】,添加自建应用,认证集成选择SDK/API并保存。
在应用信息中获取ClientID。
# 环境搭建
# 引入依赖包
登录号码认证服务控制台 (opens new window),在标准版选项卡,下载并解压Android SDK。
auth_number_product-2.13.3-log-online-standard-cuum-release.aar//阿里云一键登录SDK
crashshield-2.1.3.2-release.aar //阿里云crash 记录SDK
main-2.2.2-release.aar // SDK内部的一些核心工具类,比如线程池、json解析等。
logger-2.2.2-release.aar //SDK内部用于收集日志信息和监控告警的
AuthnCenter_MobileNumberAuth_1.5.3.arr //IDaaS一键登录SDK
2
3
4
5
# 配置build.gradle
将arr包放在App工程下的libs目录下,在bulid.gradle中写入以下代码。
/*begin*/
/* rxjava2 + okhttp + retrofit2 */
api 'io.reactivex.rxjava2:rxjava:2.2.10'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
api 'com.squareup.retrofit2:retrofit:2.6.0'
api 'com.squareup.retrofit2:adapter-rxjava2:2.6.0'
api 'com.squareup.retrofit2:converter-gson:2.6.0'
api 'com.squareup.okhttp3:okhttp:4.3.1'
api 'com.squareup.okhttp3:logging-interceptor:3.6.0'
api 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
api 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
api 'com.alibaba:fastjson:1.2.61'
/*end*/
implementation(name: 'AuthnCenter_MobileNumberAuth_1.5.3', ext: 'aar')
implementation(name: 'auth_number_product-2.13.3-log-online-standard-cuum-release', ext: 'aar')
implementation(name: 'crashshield-2.1.3.2-release', ext: 'aar')
implementation(name: 'main-2.2.2-release', ext: 'aar')
implementation(name: 'logger-2.2.2-release', ext: 'aar')
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
注意:如果在 Run的时候报以下错误:More than one file was found with OS independent path 'lib/x86/libauth_number_product-2.12.3.4-log-online-standard-release_alijtca_plus.so',直接注释掉引入即可。
//implementation(name: 'auth_number_product-2.12.3.4-log-online-standard-release', ext: 'aar')*
# 升级为AndroidX项目
由于阿里云的SDK版本必须是AndroidX版本作为支持,所以需要将现有的项目改为AndroidX版本。
先备份原有项目。
在gradle.properties中新增以下配置
android.useAndroidX=true android.enableJetifier=true
1
2升级为AndroidX项目
在Android Studio中,依次点击Refactor -> Migrate to AndroidX -> Migrate -> Do refactor。即可将本项目转化为Androidx。(注意:本次操作前,请先备份原项目)
- 编译项目
# 配置AndroidManifest
<!--权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEM"/>
<!--重点关注!!!!!!!-->
<!--如果不需要使用窗口模式,不要使用authsdk_activity_dialog主题,会出现异常动画-->
<!--如果需要使用authsdk_activity_dialog主题,则screenOrientation一定不能指定明确的方向,
比如portrait、sensorPortrait,在8.0的系统上不允许窗口模式指定orientation,会发生crash,需要指定为behind,
然后在授权页的前一个页面指定具体的orientation-->
<activity
android:name="com.mobile.auth.gatewayauth.LoginAuthActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="behind"
android:theme="@style/authsdk_activity_dialog" />
<activity
android:name="com.mobile.auth.gatewayauth.activity.AuthWebVeiwActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="behind" />
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 配置 http 支持
在res目录下新建一个xml复制以下内容 ,在application引入。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">enrichgw.10010.com</domain> <!-- 联通内部5G请求域名,开发者需要添加 -->
<domain includeSubdomains="true">onekey.cmpassport.com</domain> <!-- 移动内部请求域名,开发者需要添加 -->
</domain-config>
</network-security-config>
2
3
4
5
6
7
# 开发集成
# SDK初始化
将添加认证方案中获取的密钥保存在app端,在app的入口地方,注册密钥到IDaaS SDK。
AuthnCenterSDK.Builder()
.init(this)
.setBaseUrl("https://xxx.xxx.com") //租户域名
.setClientId(xxxx") //租户后台应用client-id
.isCheckSSL(false) //是否检测SSL证书
.logEnable(false).build(); //是否打开http请求log
//初始化 一键登录应用密钥
PlatformConfig.Builder().init(this).setAliOneKeyLoginSecret(“阿里云应用密钥”);
2
3
4
5
6
7
8
基本配置初始化主类AuthnCenterSDK方法简介:
/**
* 设置IDaas访问地址
* @param baseUrl 分配的IDaaS 地址
* @return
*/
public AuthnCenterSDK setBaseUrl(String baseUrl)
/**
* 添加请求头
* @param name 请求头名称
* @param value 请求头值
* @return
*/
public AuthnCenterSDK addGlobalHeader(String name, String value)
/**
* 是否开启SSL校验 只针对HTTPS有效
* @param isCheck true 开启 false 关闭
* @return
*/
public AuthnCenterSDK isCheckSSL(boolean isCheck)
/**
* 是否开启日志
* @param isOpen true 开启 false 关闭
* @return
*/
public AuthnCenterSDK logEnable(boolean isOpen)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
一键登录初始化主类AuthnCenterMobileNumberAuthAliYun方法简介:
/**
* 初始化一键登录
* @param context Android上下文
* @param loginListener 回调
* @return
*/
public AuthnCenterMobileNumberAuthAliYun init(@NotNull Context context, @NotNull AliOneStepListener loginListener)
/**
* 一键登录方法
* @param config UI
*/
public void oneKeyLogin(UiConfig config)
/**
* 一键登录回调事件
*/
public interface AliOneStepListener
{
/**
* 成功
* @param code 固定成功code 码为 1002
* @param data sessionToken
*/
void success(String code, String data);
/**
* 失败
* @param code 异常错误码为 1001 其它错误码则为相关服务商返回
* @param msg
*/
void error(String code, String msg);
}
/**
* UI配置抽象类,定义UI时需要继承并实现 configAuthPahe()方法
* 可参考示例代码 或者阿里云自定义UI代码片段
*/
public abstract class UiConfig {
public abstract void configAuthPage();
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
调用示例:
AuthnCenterMobileNumberAuthAliYun.Builder().init(this, new AliOneStepListener() {
@Override
public void success(String code, String data) {
}
@Override
public void error(String code, String msg) {
}
});
//唤起一键登录
AuthnCenterMobileNumberAuthAliYun.Builder().oneKeyLogin(uiConfig);
2
3
4
5
6
7
8
9
10
11
# 环境检测
App客户端使用一键登录功能,需先通过阿里云的检测方法来检测环境是否合适。终端手机需满足4G环境下才能被调用成功。
PhoneNumberAuthHelper对象方法简介:
/**
* SDK环境检查函数,检查终端是否⽀持号码认证,通过TokenResultListener返回code
* type 1:本机号码校验 2: ⼀键登录
* 600024 终端⽀持认证
* 600013 系统维护,功能不可⽤
*/
public void checkEnvAvailable(@IntRange(from = 1, to = 2) int type)
2
3
4
5
6
7
调用示例:
AuthnCenterMobileNumberAuthAliYun.Builder().mPhoneNumberAuthHelper.checkEnvAvailable(2);
2
检测成功后,可以调用加速的一个方法,加速一键登录授权页弹起,防止调用一键登录拉起等待弹起授权页时间过长(根据实际情况使用不是必须)。
/**
* 加速授权⻚唤起
*
* @param overdueTime 预取号有效期
* @param listener 预取号回调
*/
public void accelerateLoginPage(final int overdueTime, final PreLoginResultListener listener)
2
3
4
5
6
7
8
此接口主要用于手动输入手机号点击确定 加速获取token使用。
一键登录场景一般不涉及此接口,SDK内置封装的为 getLoginToken接口,默认使用SDK内置一键登录登录方法即可。
如有其它功能且不想使用SDK内置一键登录,可直接使用阿里云SDK原生方法进行调用,只需要把原生事件TokenResultListener更换为AliYunTokenListener 即可。
# 唤起授权页面
环境检测成功后,拉起IDaaS SDK的一键登录方法。
示例代码:
//唤起一键登录
AuthnCenterMobileNumberAuthAliYun.Builder().oneKeyLogin(uiConfig);
2
IDaaS SDK默认的一键登录页面,包含脱敏显示的号码、返回按钮、复选框协议签署以及其他方式登录的按钮。以上组件的样式、文字描述可定制化。
其中,本机号码一键登录、返回以及其他方式登录按钮,点击操作后,IDaaS SDK将向App客户端发起回调,返回内容为返回码和相关数据,并关闭窗口,即操作完成;复选框协议签署,操作后回调函数给出相关数据,窗口不会被关闭。
调用失败示例:
调用成功示例:
调用成功之后 可根据返回的sessionToken 换取用户详细信息,具体可参考服务端API文档介绍。
# 关闭加载和登录界面
AuthnCenterMobileNumberAuthAliYun.*Builder*().**mPhoneNumberAuthHelper**.hideLoginLoading();
*//关闭 loading*
AuthnCenterMobileNumberAuthAliYun.*Builder*().**mPhoneNumberAuthHelper**.quitLoginPage();
*//关闭 一键登录界面*
2
3
4
# 授权界面设计
确保用户在登录过程中将手机号码信息授权给开发者使用的知情权,一键登录需要开发者提供授权页登录页面供用户授权确认。开发者在调用授权登录方法前,必须弹出授权页,明确告知用户当前操作会将用户的本机号码信息传递给应用。
示例代码如下,详细代码可参考demo。
mAuthHelper.removeAuthRegisterXmlConfig();
mAuthHelper.removeAuthRegisterViewConfig();
//添加自定义切换其他登录方式
mAuthHelper.addAuthRegistViewConfig("switch_msg", new AuthRegisterViewConfig.Builder()
.setView(initSwitchView(350))
.setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
.setCustomInterface(new CustomInterface() {
@Override
public void onClick(Context context) {
Toast.makeText(mContext, "切换到短信登录方式", Toast.LENGTH_SHORT).show();
mAuthHelper.quitLoginPage();
}
}).build());
int authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
if (Build.VERSION.SDK_INT == 26) {
authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND;
}
mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
.setAppPrivacyOne("《自定义隐私协议》", "https://www.qq.com")
.setAppPrivacyTwo("《百度》", "https://www.baidu.com")
.setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
//隐藏默认切换其他登录方式
.setSwitchAccHidden(true)
//隐藏默认Toast
.setLogBtnToastHidden(true)
//沉浸式状态栏
.setNavColor(Color.parseColor("#026ED2"))
.setStatusBarColor(Color.parseColor("#026ED2"))
.setWebViewStatusBarColor(Color.parseColor("#026ED2"))
.setLightColor(false)
.setWebNavTextSizeDp(20)
//图片或者xml的传参方式为不包含后缀名的全称 需要文件需要放在drawable或drawable-xxx目录下 in_activity.xml, mytel_app_launcher.png
.setAuthPageActIn("in_activity", "out_activity")
.setAuthPageActOut("in_activity", "out_activity")
.setVendorPrivacyPrefix("《")
.setVendorPrivacySuffix("》")
.setPageBackgroundPath("page_background_color")
.setLogoImgPath("mytel_app_launcher")
//一键登录按钮三种状态背景示例login_btn_bg.xml
.setLogBtnBackgroundPath("login_btn_bg")
.setScreenOrientation(authPageOrientation)
.create());
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 阿里云返回码
返回码 | 返回码描述 | 建议 |
---|---|---|
600000 | 获取Token成功 | 无。 |
600001 | 唤起授权页成功 | 无。 |
600002 | 唤起授权页失败 | 建议切换到其他登录方式。 |
600004 | 获取运营商配置信息失败 | 创建工单联系工程师。 |
600005 | 手机终端不安全 | 切换到其他登录方式。 |
600007 | 未检测到SIM卡 | 提示用户检查SIM卡后重试。 |
600008 | 移动数据网络未开启 | 提示用户开启移动数据网络后重试。 |
600009 | 无法判断运营商 | 创建工单联系工程师。 |
600010 | 未知异常 | 创建工单联系工程师。 |
600011 | 获取Token失败 | 切换到其他登录方式。 |
600012 | 预取号失败 | 无。 |
600013 | 运营商维护升级,该功能不可用 | 创建工单联系工程师。 |
600014 | 运营商维护升级,该功能已达最大调用次数 | 创建工单联系工程师。 |
600015 | 接口超时 | 切换到其他登录方式。 |
600017 | App ID、App Key解析失败 | 密钥未设置或者设置错误,请先检查密钥信息,如密钥无问题创建工单联系工程师。 |
600021 | 点击登录时检测到运营商已切换 | 切换到其他登录方式。 |
600023 | 加载⾃定义控件异常 | 检查⾃定义控件添加是否正确。 |
600024 | 终端环境检查⽀持认证 | 无。 |
600025 | 终端检测参数错误 | 检查传⼊参数类型与范围是否正确。 |
600026 | 授权页已加载时不允许调用加速或预取号接口 | 检查是否有授权页拉起后,调用preLogin或者accelerateAuthPage接口的行为不被允许。 |
授权页点击事件响应码:
响应码 | 响应码描述 |
---|---|
700000 | 点击返回,⽤户取消免密登录。 |
700001 | 点击切换按钮,⽤户取消免密登录。 |
700002 | 点击登录按钮事件。 |
700003 | 点击check box事件。 |
700004 | 点击协议富文本文字事件。 |
# 运营商错误码
# 中国移动
返回码 | 返回码描述 |
---|---|
103000 | 成功。 |
102507 | 登录超时(授权页点登录按钮时)。 |
103101 | 请求签名错误。 |
103102 | 包签名或Bundle ID错误。 |
103111 | 网关IP错误或错误的运营商请求。 |
103119 | AppID不存在。 |
103211 | 其他错误,请提工单联系工程师。 |
103412 | 无效的请求有加密方式错误、非JSON格式和空请求等。 |
103414 | 参数校验异常。 |
103511 | 服务器IP白名单校验失败。 |
103811 | Token为空。 |
103902 | 短时间内重复登录,造成script失效。 |
103911 | Token请求过于频繁,10分钟内获取Token且未使用的数量不超过30个。 |
104201 | Token重复校验失败、失效或不存在。 |
105018 | 使用了本机号码校验的Token获取号码,导致Token权限不足。 |
105019 | 应用未授权。 |
105021 | 已达当天取号限额。 |
105302 | AppID不在白名单。 |
105313 | 非法请求。 |
200005 | 用户未授权(READ_PHONE_STATE)。 |
200010 | 无法识别SIM卡或没有SIM卡(Android)。 |
200020 | 用户取消登录。 |
200021 | 数据解析异常。 |
200022 | 无网络。 |
200023 | 请求超时。 |
200024 | 数据网络切换失败。 |
200025 | 位置错误(一般是线程捕获异常、socket、系统未授权移动数据网络权限等,请提工单联系工程师)。 |
200026 | 输入参数错误。 |
200027 | 未开启移动数据网络或网络不稳定。 |
200028 | 网络请求出错。 |
200038 | 异网取号网络请求失败。 |
200039 | 异网取号网关取号失败。 |
200048 | 用户未安装SIM卡。 |
200050 | EOF异常。 |
200061 | 授权页面异常。 |
200064 | 服务端返回数据异常。 |
200072 | CA根证书校验失败。 |
200082 | 服务器繁忙。 |
200086 | ppLocation为空。 |
200087 | 仅用于监听授权页成功拉起。 |
200096 | 当前网络不支持取号。 |
# 中国联通
返回码 | 返回码描述 |
---|---|
0 | 表示请求成功。 |
-10008 | JSON转换失败。 |
1,请求超时 | 请求超时。 |
1,私网IP查找号码失败 | 私网IP查找号码失败。 |
1,私网IP校验错误 | 私网IP校验错误。 |
1,源IP鉴权失败 | 源IP鉴权失败。 |
1,获取鉴权信息失败 | 获取鉴权信息失败。 |
1,获得的手机授权码失败 | 一般是由于请求SDK超时导致的失败。 |
1,网关取号失败 | 网关取号失败。 |
1,网络请求失败 | 网络请求失败。 |
1,验签失败 | 签名校验失败。 |
1,传入code和AppID不匹配 | 传入code和AppID不匹配。 |
1,似乎已断开与互联网的链接 | 网络不稳定导致连接断开。 |
1,此服务器的证书无效 | 连接到不安全的服务器,提工单联系工程师。 |
1,PIP校验不通过 | 提工单联系工程师。 |
1,网关并发连接数受限 | 提工单联系工程师。 |
1,目前不允许数据链接 | 提工单联系工程师。 |
1,无法连接到服务器 | 提工单联系工程师。 |
1,系统内部错误 | 提工单联系工程师。 |
1,取号网关内部错误 | 取号网关内部错误,提工单联系工程师。 |
1,connect address error | 连接地址错误,一般是由于超时导致失败。 |
1,select socket error | 选择socket错误。 |
1,handshake failed | 握手失败。 |
1,decode ret_url fail | URL解码失败。 |
1,connect error | 连接错误。 |
1,read failed | 提工单联系工程师。 |
1,response null | 无响应,提工单联系工程师。 |
1,未知错误 | 提工单联系工程师。 |
2,请求超时 | 接口请求耗时超过timeout设定的值。 |
# 中国电信
返回码 | 返回码描述 |
---|---|
-64 | Permission-denied(无权限访问)。 |
-65 | API-request-rates-Exceed-Limitations(调用接口超限)。 |
-10001 | 取号失败,mdn为空。 |
-10002 | 参数错误。 |
-10003 | 解密失败。 |
-10004 | IP受限。 |
-10005 | 异网取号回调参数异常。 |
-10006 | mdn取号失败,且属于电信网络。 |
-10007 | 重定向到异网取号。 |
-10008 | 超过预设取号阈值。 |
-10009 | 时间戳过期。 |
-10013 | Perator_unsupported,提工单联系工程师。 |
-20005 | Sign-invalid(签名错误)。 |
-8001 | 网络异常,请求失败。 |
-8002 | 请求参数错误。 |
-8003 | 请求超时。 |
-8004 | 移动数据网络未开启。 |
-8010 | 无网络连接(网络错误)。 |
-720001 | Wi-Fi切换4G请求异常。 |
-720002 | Wi-Fi切换4G超时。 |
80000 | 请求超时。 |
80001 | 网络连接失败、网络链接已中断、Invalid argument、目前不允许数据连接。 |
80002 | 响应码错误404。 |
80003 | 网络无连接。 |
80005 | socket超时异常。 |
80007 | IO异常。 |
80008 | No route to host. |
80009 | Nodename nor servname provided, or not known. |
80010 | Socket closed by remote peer. |
80800 | Wi-Fi切换超时。 |
80801 | Wi-Fi切换异常。 |
# IDaaS返回码
状态码 | 错误码 (error_code) | 错误说明 (error_msg) | 处理措施 |
---|---|---|---|
400 | IDAAS.SDK.COMMON.1001 | Parameter {0} cannot be left blank | |
参数 {0} 不能为空 | |||
400 | IDAAS.SDK.COMMON.1002 | The {0} parameter format is incorrect | |
参数 {0} 格式错误 | |||
400 | IDAAS.SDK.COMMON.1003 | Device information is incomplete | |
设备信息不完整 | |||
400 | IDAAS.SDK.COMMON.1004 | Signature decryption error | |
签名解密错误 | |||
400 | IDAAS.SDK.COMMON.1005 | The {0} has failed | |
{0} 已失效 | |||
400 | IDAAS.SDK.COMMON.1006 | The {0} parameter error | |
{0} 参数错误 | |||
400 | IDAAS.SDK.COMMON.1007 | The {0} parameter type error | |
{0}参数类型错误 | |||
500 | IDAAS.SDK.COMMON.1008 | The system is busy. Try again later | |
系统繁忙。稍后再试 | |||
400 | IDAAS.SDK.COMMON.1009 | Unknown authentication configuration | |
未知的认证配置 | |||
400 | IDAAS.SDK.COMMON.1010 | Failed to obtain the enterprise center global configuration | |
获取企业中心全局配置失败 | |||
400 | IDAAS.SDK.COMMON.1011 | Failed to obtain the international area code configuration | |
获取国际区号配置失败 | |||
400 | IDAAS.SDK.COMMON.1012 | The x-client-ID is incorrect and the corresponding application cannot be found | |
X-client-id错误,找不到对应的应用 | |||
400 | IDAAS.SDK.COMMON.1013 | The corresponding user is not found | |
未找到对应的用户 | |||
400 | IDAAS.SDK.COMMON.1014 | Application private key not found | |
未找到应用私钥 | |||
400 | IDAAS.SDK.LOGIN.1001 | Error calling interface {0} | |
调用 {0} 接口出错 | |||
400 | IDAAS.SDK.LOGIN.1002 | User not bound | |
用户未绑定 | |||
400 | IDAAS.SDK.LOGIN.1003 | The user has been locked due to too many unsuccessful login attempts. It will be unlocked in {0} minutes and {1} seconds | |
由于多次登录失败,用户已被锁定。 它将在 {0} 分钟和 {1} 秒内解锁 | |||
400 | IDAAS.SDK.LOGIN.1004 | Failed to obtain the password policy | |
获取密码策略错误 | |||
400 | IDAAS.SDK.LOGIN.1005 | Invalid username or password. Remaining login attempts: {0} | |
无效的用户名或密码。 其余登录尝试次数:{0} | |||
400 | IDAAS.SDK.LOGIN.1006 | Configuration error, unable to find wechat authentication source | |
配置错误,找不到微信认证源 | |||
400 | IDAAS.SDK.LOGIN.1007 | Configuration error, unable to find alipay authentication source | |
配置错误,找不到支付宝认证源 | |||
400 | IDAAS.SDK.LOGIN.1008 | The configuration is incorrect. The one-click login authentication source cannot be found | |
配置错误,无法找到一键登录认证源 | |||
400 | IDAAS.SDK.SMS.1001 | {0} slide base map is not initialized successfully, please check the path | |
{0} 滑动底图未初始化成功,请检查路径 | |||
400 | IDAAS.SDK.SMS.1002 | {0} verification code coordinate resolution failed | |
{0} 验证码坐标解析失败 | |||
400 | IDAAS.SDK.SMS.1003 | {0} verification code coordinate verification fails | |
{0} 验证码坐标校验失败 | |||
400 | IDAAS.SDK.SMS.1004 | The graphic verification code is incorrect | |
图形验证码校验错误 | |||
400 | IDAAS.SDK.SMS.1005 | SMS verification code verification is incorrect | |
短信验证码验证错误 | |||
400 | IDAAS.SDK.SMS.1006 | The email verification code is incorrect | |
邮件验证码验证错误 | |||
400 | IDAAS.SDK.SMS.1007 | Sending scenario does not exist | |
发送场景不存在 | |||
400 | IDAAS.SDK.SMS.1008 | Failed to send the verification code | |
发送验证码失败 | |||
400 | IDAAS.SDK.SOCIAL.1001 | The social account is unbound incorrectly | |
社交账号解绑错误 | |||
400 | IDAAS.SDK.SOCIAL.1002 | The social account has been bound, please unbind it first | |
社交账号已绑定,请先解绑 | |||
400 | IDAAS.SDK.PWD.1001 | The password length is incorrect | |
密码长度错误 | |||
400 | IDAAS.SDK.PWD.1002 | The password cannot be the username | |
密码不能为用户名 | |||
400 | IDAAS.SDK.PWD.1003 | Your password complexity is low | |
你的密码复杂度过低 | |||
400 | IDAAS.SDK.PWD.1004 | The password is weak | |
密码很弱 | |||
400 | IDAAS.SDK.PWD.1005 | The password is used before, cannot be used again | |
该密码已被使用过,不能再次使用 | |||
400 | IDAAS.SDK.PWD.1006 | Password cannot username in reverse order | |
密码不能是用户名的倒序 | |||
400 | IDAAS.SDK.PWD.1007 | The number of repeated password characters exceeded the upper limit | |
密码重复字符数超过限制 | |||
400 | IDAAS.SDK.PWD.1008 | Password cannot contain :username, phone number, email prefix, name in PinYing | |
密码不能包含:用户名、电话号码、邮件前缀、拼音名 | |||
400 | IDAAS.SDK.MFA.1001 | The mobile doesn't match the user | |
手机号和用户不匹配 | |||
400 | IDAAS.SDK.MFA.1002 | The access control policy is incorrect | |
访问控制策略配置错误 | |||
400 | IDAAS.SDK.MFA.1003 | Access control authentication source type conversion error | |
访问控制身份验证源类型转换错误 |