小程序 wx.login 刷新session_key

使用button引导登录

<button open-type="getUserInfo" bindgetuserinfo="xxx" withCredentials></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.getUserInfo接口。我们发现几乎所有的小程...
    未央大佬阅读 15,604评论 0 23
  • 小程序面试题 小程序授权登录流程 0、如何获得用户信息...
    X秀秀阅读 5,778评论 0 8
  • 微信应用的一个很大的优势就在于使用过程中是不需要进行注册和显式登录的,大部分问题基本上可以一键解决。但是在授权、登...
    北方蜘蛛阅读 4,110评论 0 0
  • 最近做了一个投票的微信小程序,开发过程主要还是参考官方文档:https://mp.weixin.qq.com/de...
    june5253阅读 22,109评论 1 11
  • 午后值班,困得很,翻出一本书,无聊地看。一句一句,一行一行,似乎很美,我却记不得它说了什么。 “嗡嗡”,抬头,张望...
    我是怡然阅读 2,481评论 0 1