Customer Identity (CIAM)

Mobile Number One-Click Login

# Documentation Description

This document explains how to integrate the One-Click Login feature into an Android client. With One-Click Login, users do not need to input their phone number. The SDK will present an authorization page. After the user confirms authorization, the SDK obtains a token. The server then uses this token to query the carrier's gateway to retrieve the phone number currently being used for internet access by the user. The final authentication result is returned to the App's server. The Zhuyun IDaaS One-Click Login SDK is built upon the encapsulation of Alibaba Cloud's "Mobile Number Verification" SDK.

# Terminology Explanation

The One-Click Login feature, also known as Mobile Number Verification, integrates the unique data gateway authentication capabilities of the three major carriers, upgrading the traditional SMS verification code method. It is used in scenarios such as user registration and login.

# Process Explanation

Integration Process Explanation

  1. Register Alibaba Cloud's private key and IDaaS server configuration parameters with the IDaaS SDK.
  2. Terminal network detection: Check the network environment's feasibility via the Alibaba Cloud server. If the user has enabled 4G data and the network is unobstructed, the IDaaS SDK is successfully called and the authorization page is presented.
  3. The user reviews the content on the authorization page and agrees to the relevant terms. The IDaaS SDK obtains an authorization TOKEN and passes it to the IDaaS server.
  4. The IDaaS server uses the TOKEN to retrieve the user's mobile number from the Alibaba Cloud server, then initiates authentication. If authentication is successful, a sessionToken is returned, which can be stored on the App client or used for other purposes. If authentication fails, an error code and reason are returned, and the process proceeds to the next step.

# Integration Flow

# Preparation

# Register an Alibaba Cloud Account

Refer to the official Alibaba Cloud website for the Account Opening Process (opens new window) and Authentication Scheme Management (opens new window).

# Activate the Mobile Number Verification Service

  1. Visit the Mobile Number Verification Service product details page to activate and purchase as an enterprise user.

  2. Click "Activate Now" or visit the product console.

  3. On the console homepage, check the box "I have read and agree to the Mobile Number Verification Service Agreement".

  4. Click "Activate Now" to complete product activation.

  5. Log in to the Mobile Number Verification Service Console (opens new window). In the Standard Edition tab, download and extract the Alibaba Cloud Android SDK.

# Add an Authentication Scheme

  1. Add an authentication scheme in Alibaba Cloud's "Mobile Number Verification" service. Fill in the current project's package name and corresponding signature.

  1. After filling in the details, click "OK" to save the configuration. Obtain the secret key and save it locally in the app. It will be used during initialization in PlatformConfig. Refer to the SDK initialization steps.

# Configure IDaaS Backend Authentication Source

  1. Log in to the IDaaS Enterprise Center. Navigate to the menu: Authentication -> Authentication Source Management -> Built-in Authentication Sources. Click "One-Click Login with Device Number".

  1. The "One-Click Login with Device Number" configuration page will pop up. Refer to the next step "Obtain corresponding configuration information from the Alibaba Cloud console" for the relevant parameters.

Parameter configuration instructions for setting up One-Click Login with Device Number:

Parameter Parameter Description
Mobile Number Verification Service Provider Default: Alibaba Cloud
Access Key ID Fill in the AccessKey generated when creating the user on Alibaba Cloud
AccessKey Secret Fill in the AccessKey Secret generated when creating the user on Alibaba Cloud
  1. Create a user in the Alibaba Cloud Workbench, check the box below, and refer to How to Obtain AccessKey (opens new window) to obtain the relevant parameters. Configure the obtained parameters into the page from the previous step (these parameters are required for backend integration).

# Obtain ClientId {/obtain-clientid/}

  1. Log in to the IDaaS Enterprise Center, click 【Resources】-【Applications】, add a self-built application, select SDK/API for authentication integration, and save.

  2. Obtain the ClientID from the application information.

# Environment Setup {/environment-setup/}

# Introduce Dependency Packages {/introduce-dependency-packages/}

Log in to the Phone Number Verification Service Console (opens new window), go to the Standard Edition tab, and download and extract the Android SDK.

auth_number_product-2.13.3-log-online-standard-cuum-release.aar // Alibaba Cloud One-Click Login SDK
crashshield-2.1.3.2-release.aar // Alibaba Cloud Crash Recording SDK
main-2.2.2-release.aar // Some core utility classes within the SDK, such as thread pool, JSON parsing, etc.
logger-2.2.2-release.aar // Used internally by the SDK to collect log information and for monitoring and alerting.
AuthnCenter_MobileNumberAuth_1.5.3.arr   // IDaaS One-Click Login SDK
1
2
3
4
5

# Configure build.gradle {/configure-buildgradle/}

Place the aar packages in the libs directory under the App project, and write the following code in build.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')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Note: If the following error is reported during 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', simply comment out the corresponding import.

//implementation(name: 'auth_number_product-2.12.3.4-log-online-standard-release', ext: 'aar')*

# Upgrade to AndroidX Project

Since the Alibaba Cloud SDK version must be AndroidX for support, the existing project needs to be converted to the AndroidX version.

  • First, back up the original project.

  • Add the following configuration in gradle.properties

    android.useAndroidX=true
    android.enableJetifier=true
    
    1
    2
  • Upgrade to AndroidX Project

​ In Android Studio, click Refactor -> Migrate to AndroidX -> Migrate -> Do refactor in sequence. This will convert the project to AndroidX. (Note: Please back up the original project before this operation)

  • Compile the project

# Configure AndroidManifest


 <!--Permissions-->
    <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"/>
        
        <!--Special Attention!!!!!!!-->
<!--If you do not need to use the window mode, do not use the authsdk_activity_dialog theme, as it may cause abnormal animations-->
<!--If you need to use the authsdk_activity_dialog theme, screenOrientation must not specify a fixed direction,
such as portrait, sensorPortrait. On Android 8.0 systems, specifying orientation for window mode is not allowed and will cause a crash. It must be specified as behind,
and then specify the specific orientation in the page before the authorization page-->
<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" />
1
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

# Configure HTTP Support

Create a new xml directory under res, copy the following content, and reference it in the application.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">enrichgw.10010.com</domain> <!-- China Unicom internal 5G request domain, developers need to add -->
        <domain includeSubdomains="true">onekey.cmpassport.com</domain>  <!-- China Mobile internal request domain, developers need to add -->
    </domain-config>
</network-security-config>
1
2
3
4
5
6
7

# Development Integration

# SDK Initialization

Save the secret key obtained from the authentication scheme configuration on the app side. Register the secret key to the IDaaS SDK at the app's entry point.

AuthnCenterSDK.Builder()
                .init(this)
                .setBaseUrl("https://xxx.xxx.com")      //Tenant Domain
                .setClientId(xxxx") //Application client-id from tenant backend
                .isCheckSSL(false) //Whether to check SSL certificate
                .logEnable(false).build(); //Whether to enable http request log
//Initialize One-Click Login application secret key
PlatformConfig.Builder().init(this).setAliOneKeyLoginSecret("Alibaba Cloud Application Secret Key");
1
2
3
4
5
6
7
8

Introduction to the main class AuthnCenterSDK methods for basic configuration initialization:

/**
 *  Set IDaas access address
 * @param baseUrl  Assigned IDaaS address
 * @return
 */
public AuthnCenterSDK setBaseUrl(String baseUrl)
/**
 *  Add request header
 * @param name  Request header name
 * @param value Request header value
 * @return
 */
public AuthnCenterSDK addGlobalHeader(String name, String value)
/**
 *  Whether to enable SSL verification (only valid for HTTPS)
 * @param isCheck    true enable  false disable
 * @return
 */
public AuthnCenterSDK isCheckSSL(boolean isCheck)
/**
 *  Whether to enable logging
 * @param isOpen    true enable  false disable
 * @return
 */
public AuthnCenterSDK logEnable(boolean isOpen)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Introduction to the main class AuthnCenterMobileNumberAuthAliYun methods for One-Click Login initialization:

 /**
 *   Initialize One-Click Login
 * @param context  Android Context
 * @param loginListener Callback
 * @return
 */
public AuthnCenterMobileNumberAuthAliYun init(@NotNull Context context, @NotNull AliOneStepListener loginListener)

/**
 *   One-Click Login method
 * @param config   UI
 */
public void oneKeyLogin(UiConfig config)


 /**
 *   One-Click Login callback events
 */
public interface AliOneStepListener
{

/**
 *   Success
 * @param code   Fixed success code is 1002
 * @param data   sessionToken
 */
void success(String code, String data);

/**
 *   Failure
 * @param code   Exception error code is 1001, other error codes are returned by the relevant service provider
 * @param msg
 */
void error(String code, String msg);
}


/**
 *  UI configuration abstract class. When defining UI, you need to inherit and implement the configAuthPahe() method.
*   You can refer to the example code or Alibaba Cloud custom UI code snippets.
 */
public abstract class UiConfig {

    public abstract void configAuthPage();

}
1
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

Call Example:

AuthnCenterMobileNumberAuthAliYun.Builder().init(this, new AliOneStepListener() {
    @Override
    public void success(String code, String data) {
    }
    @Override
    public void error(String code, String msg) {
    }
});

//Invoke One-Click Login
AuthnCenterMobileNumberAuthAliYun.Builder().oneKeyLogin(uiConfig);
1
2
3
4
5
6
7
8
9
10
11

# Environment Detection

To use the one-click login feature, the App client must first check if the environment is suitable using Alibaba Cloud's detection method. The terminal mobile phone must be in a 4G environment for the call to succeed.

Introduction to the methods of the PhoneNumberAuthHelper object:

 /**
 * SDK environment check function to verify if the terminal supports number authentication, returns code via TokenResultListener
 * type 1: Local number verification 2: One-click login
 * 600024 Terminal supports authentication
 * 600013 System maintenance, feature unavailable
 */
public void checkEnvAvailable(@IntRange(from = 1, to = 2) int type)
1
2
3
4
5
6
7

Call example:


AuthnCenterMobileNumberAuthAliYun.Builder().mPhoneNumberAuthHelper.checkEnvAvailable(2);
1
2

After successful detection, a method to accelerate can be called to speed up the pop-up of the one-click login authorization page, preventing excessive wait time when invoking one-click login to raise the authorization page (use as needed based on actual conditions, not mandatory).

 /**
 * Accelerates the authorization page pop-up
 *
 * @param overdueTime  Pre-fetch number validity period
 * @param listener Pre-fetch number callback
 */
public void accelerateLoginPage(final int overdueTime, final PreLoginResultListener listener)

1
2
3
4
5
6
7
8

This interface is mainly used to accelerate token retrieval when manually entering a phone number and clicking confirm.

The one-click login scenario generally does not involve this interface. The SDK's built-in encapsulation uses the getLoginToken interface; using the SDK's default one-click login method is sufficient.

If there are other functionalities and you do not wish to use the SDK's built-in one-click login, you can directly call the Alibaba Cloud SDK's native methods. Simply replace the native event TokenResultListener with AliYunTokenListener.

# Invoking the Authorization Page

After successful environment detection, invoke the IDaaS SDK's one-click login method.

Example code:

//Invoke one-click login
AuthnCenterMobileNumberAuthAliYun.Builder().oneKeyLogin(uiConfig);
1
2

The IDaaS SDK's default one-click login page includes the desensitized phone number, a back button, a checkbox for agreement signing, and a button for other login methods. The style and text description of the above components can be customized.

Among these, clicking the one-click login for the local number, back, or other login method buttons will trigger a callback from the IDaaS SDK to the App client, returning content such as the return code and related data, and the window will close, meaning the operation is complete. For the checkbox agreement signing, the callback function provides related data after operation, and the window will not close.

Example of a failed call:

Example of a successful call:

After a successful call, the returned sessionToken can be used to exchange for detailed user information. Please refer to the server-side API documentation for details.

# Closing the Loading and Login Interface

AuthnCenterMobileNumberAuthAliYun.*Builder*().**mPhoneNumberAuthHelper**.hideLoginLoading();
*//Close loading*  
AuthnCenterMobileNumberAuthAliYun.*Builder*().**mPhoneNumberAuthHelper**.quitLoginPage();
*//Close the one-click login interface*
1
2
3
4

# Authorization Interface Design

Ensure users are informed and consent to providing their mobile number information to the developer during the login process. One-click login requires the developer to provide an authorization page login screen for user confirmation. Before calling the authorization login method, the developer must display the authorization page, clearly informing the user that the current operation will transmit their local phone number information to the application.

Example code is as follows. For detailed code, please refer to the demo.


mAuthHelper.removeAuthRegisterXmlConfig();
mAuthHelper.removeAuthRegisterViewConfig();
// Add custom switch to other login methods
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, "Switch to SMS login method", 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("《Custom Privacy Agreement》", "https://www.qq.com")
        .setAppPrivacyTwo("《Baidu》", "https://www.baidu.com")
        .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
        // Hide default switch to other login methods
        .setSwitchAccHidden(true)
        // Hide default Toast
        .setLogBtnToastHidden(true)
        // Immersive status bar
        .setNavColor(Color.parseColor("#026ED2"))
        .setStatusBarColor(Color.parseColor("#026ED2"))
        .setWebViewStatusBarColor(Color.parseColor("#026ED2"))


        .setLightColor(false)
        .setWebNavTextSizeDp(20)
        // For passing parameters for images or xml, use the full name without the extension. Files need to be placed in the drawable or drawable-xxx directory, e.g., 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")
        // Example of one-click login button background in three states: login_btn_bg.xml
        .setLogBtnBackgroundPath("login_btn_bg")
        .setScreenOrientation(authPageOrientation)
        .create());
1
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

# Alibaba Cloud Return Codes

Return Code Return Code Description Recommendation
600000 Token retrieval successful None.
600001 Authorization page launched successfully None.
600002 Authorization page launch failed Recommend switching to other login methods.
600004 Failed to obtain carrier configuration information Create a work order to contact an engineer.
600005 Mobile terminal is not secure Switch to other login methods.
600007 No SIM card detected Prompt the user to check the SIM card and retry.
600008 Mobile data network is not enabled Prompt the user to enable the mobile data network and retry.
600009 Unable to determine carrier Create a work order to contact an engineer.
600010 Unknown exception Create a work order to contact an engineer.
600011 Token retrieval failed Switch to other login methods.
600012 Pre-fetch number failed None.
600013 Carrier maintenance upgrade, this feature is unavailable Create a work order to contact an engineer.
600014 Carrier maintenance upgrade, maximum call count for this feature has been reached Create a work order to contact an engineer.
600015 Interface timeout Switch to other login methods.
600017 App ID, App Key parsing failed The key is not set or is set incorrectly. Please check the key information first. If the key is correct, create a work order to contact an engineer.
600021 Carrier switch detected when clicking login Switch to other login methods.
600023 Exception loading custom control Check if the custom control is added correctly.
600024 Terminal environment check supports authentication None.
600025 Terminal detection parameter error Check if the passed parameter types and ranges are correct.
600026 Accelerate or pre-fetch number interfaces cannot be called when the authorization page is already loaded Check if there is behavior where the preLogin or accelerateAuthPage interface is called after the authorization page is launched, which is not allowed.

Authorization Page Click Event Response Codes:

Response Code Response Code Description
700000 Clicked back, user canceled password-free login.
700001 Clicked the switch button, user canceled password-free login.
700002 Clicked the login button event.
700003 Clicked the check box event.
700004 Clicked the protocol rich text event.

# Carrier Error Codes

# China Mobile

Return Code Return Code Description
103000 Success.
102507 Login timeout (when clicking the login button on the authorization page).
103101 Request signature error.
103102 Package signature or Bundle ID error.
103111 Gateway IP error or wrong carrier request.
103119 AppID does not exist.
103211 Other errors, please submit a ticket to contact an engineer.
103412 Invalid request, including encryption method error, non-JSON format, empty request, etc.
103414 Parameter validation exception.
103511 Server IP whitelist validation failed.
103811 Token is empty.
103902 Repeated login in a short time, causing the script to become invalid.
103911 Token requests are too frequent; no more than 30 unused tokens can be obtained within 10 minutes.
104201 Token repeated validation failed, expired, or does not exist.
105018 Used a Token obtained from local number verification to fetch the number, resulting in insufficient Token permissions.
105019 Application is not authorized.
105021 Daily number fetching limit has been reached.
105302 AppID is not in the whitelist.
105313 Illegal request.
200005 User did not authorize (READ_PHONE_STATE).
200010 Unable to recognize SIM card or no SIM card (Android).
200020 User canceled login.
200021 Data parsing exception.
200022 No network.
200023 Request timeout.
200024 Data network switch failed.
200025 Location error (usually due to thread exception capture, socket, system not authorizing mobile data network permission, etc. Please submit a ticket to contact an engineer).
200026 Input parameter error.
200027 Mobile data network not enabled or network is unstable.
200028 Network request error.
200038 Cross-network number fetching network request failed.
200039 Cross-network number fetching gateway failed.
200048 User did not install a SIM card.
200050 EOF exception.
200061 Authorization page exception.
200064 Server returned data is abnormal.
200072 CA root certificate validation failed.
200082 Server is busy.
200086 ppLocation is empty.
200087 Only used to monitor the successful launch of the authorization page.
200096 Current network does not support number fetching.

# China Unicom

Return Code Return Code Description
0 Indicates the request was successful.
-10008 JSON conversion failed.
1, Request timeout Request timeout.
1, Private IP address lookup failed Failed to find number via private IP.
1, Private IP address validation error Private IP address validation error.
1, Source IP authentication failed Source IP authentication failed.
1, Failed to obtain authentication information Failed to obtain authentication information.
1, Failed to obtain mobile authorization code Usually caused by request SDK timeout.
1, Gateway failed to obtain number Gateway failed to obtain number.
1, Network request failed Network request failed.
1, Signature verification failed Signature verification failed.
1, The provided code does not match the AppID The provided code does not match the AppID.
1, Seems to have lost connection to the internet Unstable network caused connection loss.
1, The certificate for this server is invalid Connected to an insecure server, submit a ticket to contact engineers.
1, PIP validation failed Submit a ticket to contact engineers.
1, Gateway concurrent connections limited Submit a ticket to contact engineers.
1, Data connection not currently allowed Submit a ticket to contact engineers.
1, Unable to connect to server Submit a ticket to contact engineers.
1, System internal error Submit a ticket to contact engineers.
1, Internal error in number acquisition gateway Internal error in number acquisition gateway, submit a ticket to contact engineers.
1, connect address error Connection address error, usually caused by timeout.
1, select socket error Select socket error.
1, handshake failed Handshake failed.
1, decode ret_url fail URL decode failed.
1, connect error Connection error.
1, read failed Submit a ticket to contact engineers.
1, response null No response, submit a ticket to contact engineers.
1, Unknown error Submit a ticket to contact engineers.
2, Request timeout Interface request time exceeds the value set by timeout.

# China Telecom

Return Code Return Code Description
-64 Permission-denied (No permission to access).
-65 API-request-rates-Exceed-Limitations (API call rate limit exceeded).
-10001 Failed to obtain number, mdn is empty.
-10002 Parameter error.
-10003 Decryption failed.
-10004 IP restricted.
-10005 Abnormal callback parameters for cross-network number retrieval.
-10006 Failed to obtain mdn number, and belongs to China Telecom network.
-10007 Redirected to cross-network number retrieval.
-10008 Exceeded the preset threshold for number retrieval.
-10009 Timestamp expired.
-10013 Perator_unsupported, please submit a work order to contact an engineer.
-20005 Sign-invalid (Signature error).
-8001 Network exception, request failed.
-8002 Request parameter error.
-8003 Request timeout.
-8004 Mobile data network not enabled.
-8010 No network connection (Network error).
-720001 Wi-Fi to 4G switch request exception.
-720002 Wi-Fi to 4G switch timeout.
80000 Request timeout.
80001 Network connection failed, network link interrupted, Invalid argument, data connection currently not allowed.
80002 Response code error 404.
80003 No network connection.
80005 Socket timeout exception.
80007 IO exception.
80008 No route to host.
80009 Nodename nor servname provided, or not known.
80010 Socket closed by remote peer.
80800 Wi-Fi switch timeout.
80801 Wi-Fi switch exception.

# IDaaS Return Codes

Status Code Error Code (error_code) Error Description (error_msg) Handling Measure
400 IDAAS.SDK.COMMON.1001 Parameter {0} cannot be left blank
Parameter {0} cannot be empty
400 IDAAS.SDK.COMMON.1002 The {0} parameter format is incorrect
Parameter {0} format error
400 IDAAS.SDK.COMMON.1003 Device information is incomplete
Device information is incomplete
400 IDAAS.SDK.COMMON.1004 Signature decryption error
Signature decryption error
400 IDAAS.SDK.COMMON.1005 The {0} has failed
{0} has expired
400 IDAAS.SDK.COMMON.1006 The {0} parameter error
{0} parameter error
400 IDAAS.SDK.COMMON.1007 The {0} parameter type error
{0} parameter type error
500 IDAAS.SDK.COMMON.1008 The system is busy. Try again later
System busy. Please try again later
400 IDAAS.SDK.COMMON.1009 Unknown authentication configuration
Unknown authentication configuration
400 IDAAS.SDK.COMMON.1010 Failed to obtain the enterprise center global configuration
Failed to obtain enterprise center global configuration
400 IDAAS.SDK.COMMON.1011 Failed to obtain the international area code configuration
Failed to obtain 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 error, corresponding application cannot be found
400 IDAAS.SDK.COMMON.1013 The corresponding user is not found
Corresponding user not found
400 IDAAS.SDK.COMMON.1014 Application private key not found
Application private key not found
400 IDAAS.SDK.LOGIN.1001 Error calling interface {0}
Error calling interface {0}
400 IDAAS.SDK.LOGIN.1002 User not bound
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
The user has been locked due to multiple failed login attempts. It will be unlocked in {0} minutes and {1} seconds
400 IDAAS.SDK.LOGIN.1004 Failed to obtain the password policy
Failed to obtain password policy
400 IDAAS.SDK.LOGIN.1005 Invalid username or password. Remaining login attempts: {0}
Invalid username or password. Remaining login attempts: {0}
400 IDAAS.SDK.LOGIN.1006 Configuration error, unable to find wechat authentication source
Configuration error, unable to find WeChat authentication source
400 IDAAS.SDK.LOGIN.1007 Configuration error, unable to find alipay authentication source
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
Configuration error, 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} slide base map initialization failed, please check the path
400 IDAAS.SDK.SMS.1002 {0} verification code coordinate resolution failed
{0} verification code coordinate resolution failed
400 IDAAS.SDK.SMS.1003 {0} verification code coordinate verification fails
{0} verification code coordinate verification failed
400 IDAAS.SDK.SMS.1004 The graphic verification code is incorrect
Graphic verification code validation error
400 IDAAS.SDK.SMS.1005 SMS verification code verification is incorrect
SMS verification code validation error
400 IDAAS.SDK.SMS.1006 The email verification code is incorrect
Email verification code validation error
400 IDAAS.SDK.SMS.1007 Sending scenario does not exist
Sending scenario does not exist
400 IDAAS.SDK.SMS.1008 Failed to send the verification code
Failed to send verification code
400 IDAAS.SDK.SOCIAL.1001 The social account is unbound incorrectly
Social account unbinding error
400 IDAAS.SDK.SOCIAL.1002 The social account has been bound, please unbind it first
Social account already bound, please unbind first
400 IDAAS.SDK.PWD.1001 The password length is incorrect
Password length error
400 IDAAS.SDK.PWD.1002 The password cannot be the username
Password cannot be the username
400 IDAAS.SDK.PWD.1003 Your password complexity is low
Your password complexity is too low
400 IDAAS.SDK.PWD.1004 The password is weak
Password is too weak
400 IDAAS.SDK.PWD.1005 The password is used before, cannot be used again
This password has been used before and cannot be used again
400 IDAAS.SDK.PWD.1006 Password cannot username in reverse order
Password cannot be the reverse of the username
400 IDAAS.SDK.PWD.1007 The number of repeated password characters exceeded the upper limit
Number of repeated password characters exceeds limit
400 IDAAS.SDK.PWD.1008 Password cannot contain :username, phone number, email prefix, name in PinYing
Password cannot contain: username, phone number, email prefix, name in Pinyin
400 IDAAS.SDK.MFA.1001 The mobile doesn't match the user
Mobile number does not match the user
400 IDAAS.SDK.MFA.1002 The access control policy is incorrect
Access control policy configuration error
400 IDAAS.SDK.MFA.1003 Access control authentication source type conversion error
Access control authentication source type conversion error

I am ready. Please provide the Markdown content you would like me to translate.