微信授权登录返回code无效,签名不一致
在项目中,微信授权登录偶尔出现code无效,签名不一致的返回提示,但是就是偶然性

原因:没有调用wx.login()就获取用户的encryptedData、signature等信息
先看下官方的登录流程

很多开发者会把 login 和 getUserInfo 捆绑调用当成登录使用,其实 login 已经可以完成登录,getUserInfo 只是获取额外的用户信息(昵称、头像)。
在项目中,我进行授权登录除了wx.login()返回的code,还需要encryptedData、signature等参数传给后台。获取这些参数有两种方式,一种是点击按钮(open-type='getUserInfo')获取;另一种是 wx.getUserInfo获取;对比下两种方式获取到的数据,个人信息返回是相同一致的,encryptedData、signature等参数不一样。(第一种方式获取是在wx.login前获取,wx.getUserInfo是在wx.login后获取)会发现数据有点不一致。

由于一开始的设计缺陷和实例代码导致的(wx.getUserInfo 必须通过 wx.login 在后台生成 session_key后才能调用),所以调用 wx.login 获取 code,然后从微信后端换取到 session_key,用于解密 getUserInfo返回的敏感数据,不然会可能导致session_key和服务器存储的session_key不一致,官方提示报错返回
解决方式 :就是 wx.login 获取 code后,再用wx.getUserInfo获取encryptedData、signature等参数(顺序很重要)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
