我們在瀏覽小程序商城的時候,進(jìn)入商城首頁經(jīng)常遇到點(diǎn)擊授權(quán)允許小程序商城獲取手機(jī)號碼,小程序商城是如何做到獲取用戶在微信綁定的手機(jī)號碼的呢?
下面安菲云給您分享一下小程序商城是如何自動獲取用戶的手機(jī)號碼的實(shí)現(xiàn)的思路。
首先,小程序商城需要讓用戶授權(quán)獲取基礎(chǔ)信息,用戶同意授權(quán)后收集用戶的基礎(chǔ)信息和sessionKey,將sessionKey保存到緩存。
然后,通過小程序的button組件來讓用戶授權(quán)獲取手機(jī)號,button組件的open-type需設(shè)置成:“getPhoneNumber”。當(dāng)用戶點(diǎn)擊并同意之后,可以通過 bindgetphonenumber 事件回調(diào)獲取到微信服務(wù)器返回的加密數(shù)據(jù), 然后在服務(wù)端結(jié)合 sessionKey 以及 app_id 進(jìn)行解密獲取手機(jī)號。
注意:
在小程序商城的回調(diào)中調(diào)用 wx.login 登錄,可能會刷新登錄態(tài)。此時服務(wù)器使用 code 換取的 sessionKey 不是加密時使用的 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)
// 向服務(wù)端請求進(jìn)行解密的代碼寫在這里
...
}})
解密成功獲得以下數(shù)據(jù):
這樣就可以自動獲取到用戶綁定的手機(jī)號碼phoneNumber了。
以上是安菲云為大家分享的小程序商城自動獲取微信用戶手機(jī)號碼的實(shí)例,如果有什么疑問可以在文章底部給留言我們一起探討。