小程序 wx.login 刷新session_key

使用button引導(dǎo)登錄

<button open-type="getUserInfo" bindgetuserinfo="xxx" withCredentials></button>

xxx(){
wx.login({
     success(res){
       console.log(res.code)      
     }
   })
}

每次點(diǎn)擊登錄按鈕,經(jīng)常第一次失敗,報500,然后第二次就OK了

原因:
wx.login 每次都會刷新 session_key,session_key 是服務(wù)端用于解密數(shù)據(jù)的關(guān)鍵信息。
button 的信息授權(quán)信息獲取后,我用 wx.login 刷新 session_key,導(dǎo)致原先session_key 失效,匹配不上,解密失敗。

我的解決方法:
在onShow時,就調(diào)用一次 wx.login,拿到 code
當(dāng)用戶點(diǎn)擊按鈕,執(zhí)行一次 wx.checkSession ,如果session_key 未過期,就直接用這個code
如果過期,就重新 wx.login,并重新用wx.getUserInfo()獲取用戶信息

官方說法:
wx.login 會刷新session_key。
在userinfo button回調(diào)內(nèi)調(diào)用wx.login,開發(fā)者獲取到session_key是刷新后的session_key,
而userinfo是以刷新前session_key做加密的。所以會解密失敗。
建議開發(fā)者在獲取userinfo等加密數(shù)據(jù)前,調(diào)用wx.login 并對session_key做好維護(hù)。
另外提醒:在用戶確認(rèn)授權(quán)后,開發(fā)者可以通過 wx.getUserInfo 獲取最新的數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景小程序一個比較重要的能力就是獲取用戶信息,也就是使用 wx.getUserInfo接口。我們發(fā)現(xiàn)幾乎所有的小程...
    未央大佬閱讀 15,807評論 0 23
  • 小程序面試題 小程序授權(quán)登錄流程 0、如何獲得用戶信息...
    X秀秀閱讀 1,899評論 0 8
  • 微信應(yīng)用的一個很大的優(yōu)勢就在于使用過程中是不需要進(jìn)行注冊和顯式登錄的,大部分問題基本上可以一鍵解決。但是在授權(quán)、登...
    北方蜘蛛閱讀 872評論 0 0
  • 最近做了一個投票的微信小程序,開發(fā)過程主要還是參考官方文檔:https://mp.weixin.qq.com/de...
    june5253閱讀 22,217評論 1 11
  • 午后值班,困得很,翻出一本書,無聊地看。一句一句,一行一行,似乎很美,我卻記不得它說了什么。 “嗡嗡”,抬頭,張望...
    我是怡然閱讀 350評論 0 1

友情鏈接更多精彩內(nèi)容