微信小程序:获取用户手机号码的过程
這幾天是疫情期間,老板為了配合我們公司的線上產品,讓我們技術人員開發了一個簡單的小程序,在開發過程中,就提到了獲取用戶手機號碼的需求,然后我查閱了微信小程序開發文檔,由此,我想記錄一下,方便我以后查閱
首先,思路要明確,要想獲取手機號碼,那我們就得微信授權,微信授權的話,那我們就得獲取微信的登錄,所以第一步,調用微信登錄的api:
然后,我們將獲取到的code,發送給后臺,后臺會返回一個oppenId給前端,然后我們開始調用獲取手機號碼的api
官方文檔說的很詳細
此處還有一個問題,就是授權成功的前提,需要登錄,一開始,我是在獲取手機號碼的地方,先登錄,登錄成功后,我在手機號碼進行授權的,但是這樣會存在問題, 當時報了英文錯誤
The given payload is invalid其實這個錯誤,官方文檔給了注意,當時自己沒有留意這些在重點突出一下
在回調中調用 wx.login 登錄,可能會刷新登錄態。此時服務器使用 code 換取的 sessionKey 不是加密時使用的 sessionKey,導致解密失敗。建議開發者提前進行 login;或者在回調中先使用 checkSession 進行登錄態檢查,避免 login 刷新登錄態。
所以最好將登錄放在周期函數onload()里面,然后就不會出現這個問題了,為了避免重復登錄,我們可以將登錄寫在checkSesson里面
wx.checkSession({success () {//session_key 未過期,并且在本生命周期一直有效},fail () {// session_key 已經失效,需要重新執行登錄流程wx.login({success (res) {if (res.code) {//發起網絡請求-獲取openId等參數,存儲起來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)}}})}})別的好像沒什么可記錄的了,后期遇到問題,我會慢慢補充的
總結
以上是生活随笔為你收集整理的微信小程序:获取用户手机号码的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中clearInterval无效,以
- 下一篇: 树、树、树