微信小程序 用戶信息·獲取手機(jī)號(hào)

2022-05-11 15:42 更新

獲取手機(jī)號(hào)

獲取微信用戶綁定的手機(jī)號(hào),需先調(diào)用wx.login接口。

因?yàn)樾枰脩糁鲃?dòng)觸發(fā)才能發(fā)起獲取手機(jī)號(hào)接口,所以該功能不由 API 來(lái)調(diào)用,需用 button 組件的點(diǎn)擊來(lái)觸發(fā)。

注意:目前該接口針對(duì)非個(gè)人開發(fā)者,且完成了認(rèn)證的小程序開放(不包含海外主體)。需謹(jǐn)慎使用,若用戶舉報(bào)較多或被發(fā)現(xiàn)在不必要場(chǎng)景下使用,微信有權(quán)永久回收該小程序的該接口權(quán)限。

使用方法

需要將 button 組件 open-type 的值設(shè)置為 getPhoneNumber,當(dāng)用戶點(diǎn)擊并同意之后,可以通過(guò) bindgetphonenumber 事件回調(diào)獲取到微信服務(wù)器返回的加密數(shù)據(jù), 然后在第三方服務(wù)端結(jié)合 session_key 以及 app_id 進(jìn)行解密獲取手機(jī)號(hào)。

注意

在回調(diào)中調(diào)用 wx.login 登錄,可能會(huì)刷新登錄態(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 (e) {
    console.log(e.detail.errMsg)
    console.log(e.detail.iv)
    console.log(e.detail.encryptedData)
  }
})

返回參數(shù)說(shuō)明

參數(shù) 類型 說(shuō)明 最低版本
encryptedData String 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù),詳細(xì)見加密數(shù)據(jù)解密算法
iv String 加密算法的初始向量,詳細(xì)見加密數(shù)據(jù)解密算法
cloudID string 敏感數(shù)據(jù)對(duì)應(yīng)的云 ID,開通云開發(fā)的小程序才會(huì)返回,可通過(guò)云調(diào)用直接獲取開放數(shù)據(jù),詳細(xì)見云調(diào)用直接獲取開放數(shù)據(jù) 基礎(chǔ)庫(kù) 2.8.0

獲取得到的開放數(shù)據(jù)為以下 json 結(jié)構(gòu):

{
    "phoneNumber": "13580006666",
    "purePhoneNumber": "13580006666",
    "countryCode": "86",
    "watermark":
    {
        "appid":"APPID",
        "timestamp": TIMESTAMP
    }
}
參數(shù) 類型 說(shuō)明
phoneNumber String 用戶綁定的手機(jī)號(hào)(國(guó)外手機(jī)號(hào)會(huì)有區(qū)號(hào))
purePhoneNumber String 沒有區(qū)號(hào)的手機(jī)號(hào)
countryCode String 區(qū)號(hào)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)