日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

微信小程序:获取用户手机号码的过程

發(fā)布時(shí)間:2024/5/14 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序:获取用户手机号码的过程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這幾天是疫情期間,老板為了配合我們公司的線上產(chǎn)品,讓我們技術(shù)人員開(kāi)發(fā)了一個(gè)簡(jiǎn)單的小程序,在開(kāi)發(fā)過(guò)程中,就提到了獲取用戶手機(jī)號(hào)碼的需求,然后我查閱了微信小程序開(kāi)發(fā)文檔,由此,我想記錄一下,方便我以后查閱
首先,思路要明確,要想獲取手機(jī)號(hào)碼,那我們就得微信授權(quán),微信授權(quán)的話,那我們就得獲取微信的登錄,所以第一步,調(diào)用微信登錄的api:

wx.login({success (res) {if (res.code) {//發(fā)起網(wǎng)絡(luò)請(qǐng)求wx.request({url: 'https://test.com/onLogin',data: {code: res.code}})} else {console.log('登錄失敗!' + res.errMsg)}} })

然后,我們將獲取到的code,發(fā)送給后臺(tái),后臺(tái)會(huì)返回一個(gè)oppenId給前端,然后我們開(kāi)始調(diào)用獲取手機(jī)號(hào)碼的api

官方文檔說(shuō)的很詳細(xì)

getPhoneNumber (e) {console.log(e.detail.iv)console.log(e.detail.encryptedData)if(e.detail.iv)){//表示授權(quán)成功,自己可以測(cè)試一下,成功后就可以發(fā)送請(qǐng)求給后臺(tái),獲取解密 后的手機(jī)號(hào)碼}}

此處還有一個(gè)問(wèn)題,就是授權(quán)成功的前提,需要登錄,一開(kāi)始,我是在獲取手機(jī)號(hào)碼的地方,先登錄,登錄成功后,我在手機(jī)號(hào)碼進(jìn)行授權(quán)的,但是這樣會(huì)存在問(wèn)題, 當(dāng)時(shí)報(bào)了英文錯(cuò)誤

The given payload is invalid

其實(shí)這個(gè)錯(cuò)誤,官方文檔給了注意,當(dāng)時(shí)自己沒(méi)有留意這些在重點(diǎn)突出一下

在回調(diào)中調(diào)用 wx.login 登錄,可能會(huì)刷新登錄態(tài)。此時(shí)服務(wù)器使用 code 換取的 sessionKey 不是加密時(shí)使用的 sessionKey,導(dǎo)致解密失敗。建議開(kāi)發(fā)者提前進(jìn)行 login;或者在回調(diào)中先使用 checkSession 進(jìn)行登錄態(tài)檢查,避免 login 刷新登錄態(tài)。

所以最好將登錄放在周期函數(shù)onload()里面,然后就不會(huì)出現(xiàn)這個(gè)問(wèn)題了,為了避免重復(fù)登錄,我們可以將登錄寫(xiě)在checkSesson里面

wx.checkSession({success () {//session_key 未過(guò)期,并且在本生命周期一直有效},fail () {// session_key 已經(jīng)失效,需要重新執(zhí)行登錄流程wx.login({success (res) {if (res.code) {//發(fā)起網(wǎng)絡(luò)請(qǐng)求-獲取openId等參數(shù),存儲(chǔ)起來(lái)wx.request({url: 'https://hdxcx.cdamai.com/wechat/login',method: 'POST',data: {code: res.code,scene:decodeURIComponent(options.scene)},header: {'content-type':'application/x-www-form-urlencoded','Accept': 'application/json'},success (res) {let code = res.data.code;if(code == "0"){wx.setStorageSync('openId',res.data.data.openid);}else{wx.showToast({title:'登錄失敗',icon: 'none',duration: 2000});}}},)} else {console.log('登錄失敗!' + res.errMsg)}}})}})

別的好像沒(méi)什么可記錄的了,后期遇到問(wèn)題,我會(huì)慢慢補(bǔ)充的

總結(jié)

以上是生活随笔為你收集整理的微信小程序:获取用户手机号码的过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。