微信小程序getPhoneNumber快速獲取用戶手機(jī)號組件
說明
獲取微信用戶綁定的手機(jī)號,需先調(diào)用login接口。
因?yàn)樾枰脩糁鲃佑|發(fā)才能發(fā)起獲取手機(jī)號接口,所以該功能不由 API 來調(diào)用,需用 <button>
組件的點(diǎn)擊來觸發(fā)。
注意:目前該接口針對非個(gè)人開發(fā)者,且完成了認(rèn)證的小程序開放。需謹(jǐn)慎使用,若用戶舉報(bào)較多或被發(fā)現(xiàn)在不必要場景下使用,微信有權(quán)永久回收該小程序的該接口權(quán)限。
使用方法
需要將 <button>
組件 open-type
的值設(shè)置為 getPhoneNumber
,當(dāng)用戶點(diǎn)擊并同意之后,可以通過 bindgetphonenumber
事件回調(diào)獲取到微信服務(wù)器返回的加密數(shù)據(jù), 然后在第三方服務(wù)端結(jié)合 session_key
以及 app_id
進(jìn)行解密獲取手機(jī)號。
注意
在回調(diào)中調(diào)用 wx.login
登錄,可能會刷新登錄態(tài)。此時(shí)服務(wù)器使用 code 換取的 sessionKey 不是加密時(shí)使用的 sessionKey,導(dǎo)致解密失敗。建議開發(fā)者提前進(jìn)行 login
;或者在回調(diào)中先使用 checkSession
進(jìn)行登錄態(tài)檢查,避免 login
刷新登錄態(tài)。
例子
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> </button>
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
}
})
返回參數(shù)說明
參數(shù) | 類型 | 說明 |
---|---|---|
encryptedData | String | 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù),詳細(xì)見加密數(shù)據(jù)解密算法 |
iv | String | 加密算法的初始向量,詳細(xì)見加密數(shù)據(jù)解密算法 |
encryptedData 解密后為以下 json 結(jié)構(gòu),詳見加密數(shù)據(jù)解密算法
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
參數(shù) | 類型 | 說明 |
---|---|---|
phoneNumber | String | 用戶綁定的手機(jī)號(國外手機(jī)號會有區(qū)號) |
purePhoneNumber | String | 沒有區(qū)號的手機(jī)號 |
countryCode | String | 區(qū)號 |
更多微信小程序開發(fā)教程,關(guān)注hi小程序。
第二部分:如何開通一個(gè)小商店