微信小程序開發偶發性獲取手機号失敗解決方案
發布時(shí)間:2022-08-12 09:41:08
作者:King
來(lái)源:本站
浏覽量(2254)
點贊(72)
摘要:概要在微信小程序開發中,獲取用(yòng)戶信息,獲取手機号基本是必須用(yòng)到的(de)功能但是在有些時(shí)候會遇到小程序解密失敗的(de)問題,這(zhè)多(duō)數是因爲前端這(zhè)邊登錄流程出的(de)問題會出錯的(de)流程:前端多(duō)數是把open-data的(de)獲取加密信息按鈕做(zuò)成登錄按鈕,然後點擊的(de)時(shí)候用(yòng)wx.login獲取code,成功後将加密信息和(hé)code傳到後端直接調用(yòng)解密手機号的(de)接口
概要
在微信小程序開發中,獲取用(yòng)戶信息,獲取手機号基本是必須用(yòng)到的(de)功能
但是在有些時(shí)候會遇到小程序解密失敗的(de)問題,這(zhè)多(duō)數是因爲前端這(zhè)邊登錄流程出的(de)問題
會出錯的(de)流程:前端多(duō)數是把open-data的(de)獲取加密信息按鈕做(zuò)成登錄按鈕,然後點擊的(de)時(shí)候用(yòng)wx.login獲取code,成功後将加密信息和(hé)code傳到後端直接調用(yòng)解密手機号的(de)接口,這(zhè)樣session_key可(kě)能沒來(lái)得(de)及刷新,從而導緻解密失敗,但是第二次解密一定會成功的(de)現象
原因分(fēn)析
出錯的(de)原因:在回調中調用(yòng) wx.login 登錄,可(kě)能會刷新登錄态。此時(shí)服務器使用(yòng) code 換取的(de) sessionKey 不是加密時(shí)使用(yòng)的(de) sessionKey,導緻解密失敗。
解決方案:建議(yì)開發者提前進行 login;或者在回調中先使用(yòng) checkSession 進行登錄态檢查,避免 login 刷新登錄态。
解決案例
所有解決辦法是提前調wx.login,在獲取手機号的(de)回調方法中取檢驗登錄狀态,代碼如下(xià):
onLoad: function (options) { //先登錄提前保存code wx.login({ success: res => { that.setData({ code: res.code }) } }) }, getPhoneNumber(e) { //觸發獲取手機号加密信息 let that = this, encryptedData = e.detail.encryptedData, iv = e.detail.iv; wx.checkSession({ success() { //session_key 未過期,并且在本生命周期一直有效(這(zhè)裏面可(kě)以不寫代碼) }, fail() { // session_key 已經失效,需要重新執行登錄流程并更新code wx.login({ success: res => { code = res.code that.setData({ code: code }) } }) }, complete() { //将code,encryptedData,iv傳給後台進行解密 } }) }
掃一掃,關注我們
72
相關新聞
- JAVA開發之hashMap時(shí)間複雜(zá)度分(fēn)析
- 微信小程序開發偶發性獲取手機号失敗解決方案
- 使用(yòng)JAVA開發小程序時(shí),如何防止接口被頻(pín)繁請求
- app開發制作過程中,使用(yòng)JAVA注解方式,實現權限功能開發
- springBoot小程序開發的(de)項目,後台如何優雅的(de)停止進程
- JAVA知識十連問
- JAVA語言小程序開發之hashMap原理(lǐ)詳解
- mysql常見錯誤詳解
- 小程序open-data組件将于2022年2月(yuè)21日24時(shí)起···
- 爲什(shén)麽重寫了(le)equals方法,就必須重寫hashCode