小程序 wx.login 刷新session_key

使用button引导登录



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

每次点击登录按钮,经常第一次失败,报500,然后第二次就OK了

原因:
wx.login 每次都会刷新 session_key,session_key 是服务端用于解密数据的关键信息。
button 的信息授权信息获取后,我用 wx.login 刷新 session_key,导致原先session_key 失效,匹配不上,解密失败。

我的解决方法:
在onShow时,就调用一次 wx.login,拿到 code
当用户点击按钮,执行一次 wx.checkSession ,如果session_key 未过期,就直接用这个code
如果过期,就重新 wx.login,并重新用wx.getUserInfo()获取用户信息

官方说法:
wx.login 会刷新session_key。
在userinfo button回调内调用wx.login,开发者获取到session_key是刷新后的session_key,
而userinfo是以刷新前session_key做加密的。所以会解密失败。
建议开发者在获取userinfo等加密数据前,调用wx.login 并对session_key做好维护。
另外提醒:在用户确认授权后,开发者可以通过 wx.getUserInfo 获取最新的数据。

你可能感兴趣的:(小程序 wx.login 刷新session_key)