微信小程序:获取用户手机号码的过程
這幾天是疫情期間,老板為了配合我們公司的線上產(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:
然后,我們將獲取到的code,發(fā)送給后臺(tái),后臺(tái)會(huì)返回一個(gè)oppenId給前端,然后我們開(kāi)始調(diào)用獲取手機(jī)號(hào)碼的api
官方文檔說(shuō)的很詳細(xì)
此處還有一個(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)題。
- 上一篇: js中clearInterval无效,以
- 下一篇: 树、树、树