# Acquire Mobile Numbers
Calling thewx.login API is required before acquiring the user's mobile number linked to Weixin.
As the API for acquiring the mobile number can be initiated only by a user’s trigger, click the [button]((button) component to trigger it rather than directly calling the API.
Note: Currently, this API is applicable to non-individual developers, and the Mini Programs which have completed verification (not including overseas entities). It should be used with caution. If a large number of user reports are recorded, or the API is used when not necessary, Weixin has the right to permanently revoke access privileges to this API of the Mini Program.
# Usage
Set the open-type
value of the [button]((button) component to getPhoneNumber
, click to agree, and then you can acquire the encrypted data returned by the Weixin server via bindgetphonenumber
event callback. On the third party server, you candecrypt and acquire the mobile number by using session_key
and app_id
.
# Note
During the callback, calling wx.login login may refresh the login status. In this case, the sessionKey that the server exchanges with the code is not the sessionKey that was used during encryption, causing decryption failure. We recommend developers to conduct login
in advance, or start with login status check using checkSession
during callback, avoiding login status refresh due to login
.
# Code Sample
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
Page({
getPhoneNumber (e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
}
})
# Response Parameters
Parameter | Type | Description | Minimum Version |
---|---|---|---|
encryptedData | String | The complete encrypted user data, including the sensitive data. For details, see [Decryption Algorithm for Encrypted Data]((signature#decryption algorithm for encrypted data)) | |
iv | String | The initial vector of the encryption algorithm. For details, see [Decryption Algorithm for Encrypted Data] ((signature#decryption algorithm for encrypted data)) | |
cloudID | String | The Cloud ID corresponding to the sensitive data will be returned only after the Mini Program of the Cloud Base is enabled. The open data can be obtained directly via cloud call. For details, see the Directly Get Open Data via Cloud Call | 2.8.0 |
There are two ways to acquire sensitive data, one is to use the [Decryption Algorithm for Encrypted Data] ((open-ability/signature#decryption algorithm for encrypted data)) to decrypt encryptedData in the developer's backend; and the other is to directly get open data nby cloudID via cloud call.
The acquired open data has the following json structure:
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp": TIMESTAMP
}
}
Parameter | Type | Description |
---|---|---|
phoneNumber | String | The user's mobile number linked to Weixin (overseas numbers may have country codes) |
purePhoneNumber | String | The mobile number without the country code |
countryCode | String | The country code |