E企盈营销工具技术服务商 热线:4006-838-530

微信小程序登录解密异常

E企盈直播平台营销卖货系统

错误描述用户登录微信小程序,初始登录会报错,接着再登录,就会登录成功。后端catch住的异常抛异常原因小程序客户端调用微信服务器的接口顺序反了。小程序客户端需要调用微信服务器的wx.login接口来获取code,然后调用wx.getUserInfo来获取加密数据和偏移向量iv。正确的顺序应该是先调用login,然后再调用getUserInfo。而公司代码先调用了getUserInfo获取了解密数据,然后又调用的login,就会刷新登录态,这样获取的code换取的解密秘钥和提前获取的加密数据的加密秘钥就可能不一致的,所以无法成功解密。错误代码//先调用了getUserInfo,获取用户信息  bindGetUserInfo: function (e) {    //  console.log(e)    wx.showToast({      title: ‘加载中’,      icon: ‘loading’,      duration: 3000    });    var that = this,      userInfo = e.detail,      encryptedData = userInfo.encryptedData,      iv = userInfo.iv;   //然后才调用了login    wx.login({      success: function (res) {        //用拿到的code,从后台获取sessionId        wx.request({          url: sessionID,          method: ‘GET’,          data: {            js_code: res.code,            movieCode: movieCode          },          header: {            “Content-Type”: “application/x-www-form-urlencoded”,            ‘Accept’: ‘application/json’          },        });     }  });正确代码//先调用loginwx.login({      success: function (res) {           //用拿到的code,从后台获取sessionId        wx.request({          url: sessionID,          method: ‘GET’,          data: {            js_code: res.code,            movieCode: movieCode          },          header: {            “Content-Type”: “application/x-www-form-urlencoded”,            ‘Accept’: ‘application/json’          },          success: function (res) {            // console.log(‘sessionId:’);            // console.log(res.data.resultData);            // console.log(res.data.resultData);            var sessionId = res.data.resultData; //从后台获取到的sessionId            wx.setStorageSync(‘sessionId’, sessionId);            //然后调用getUserInfo获取加密数据encryptedData和iv            wx.getUserInfo({              success: function(msg){                console.log(msg);                var encryptedData = msg.encryptedData,                 iv = msg.iv;                wx.request({                  url: userInfoUrl,                  method: ‘POST’,                  data: {                    encryptedData: encryptedData,                    iv: iv,                    sessionId: sessionId                  },         //代码不完整,参考者请注意。。。。结语这个问题搞了好几天,一直以为是后端的问题,一直再调整后端,直到快要放弃的时候,才发现,原来问题症结在此。所以,调用微信服务器接口的顺序一定是wx.login在前,wx.getUserInfo在后。

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序登录解密异常
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏