收藏
回答

微信登录signature校验失败

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.getUserInfo 工具 7.0.4 2.0.4

- 当前 Bug 的表现(可附上截图)



授权登录获取用户信息返回的signature,有延迟,导致sha1校验的时候失败,后续请求的时候才会成功。

左边的2个红框是微信返回的。右边是我程序按照sha1算法计算出来。

请立即解决下~!


最后一次编辑于  07-05
回答关注问题邀请回答
收藏

2 个回答

  • 曾经
    曾经
    09-24

    wx.login({

      success (res) {

        if (res.code) {

          wx.request({

    // 1、服务器api调用 微信 auth.code2Session 获取openid、session_key等信息、缓存在redis中,以备后用

    // 2、服务端根据获取的 openid、判断用户是否存在数据库中等计算

            url: 'api/onLogin', 

            data: {

              code: res.code

            },

    success: function (res) {

    // 1、服务端返回 登录信息,如果信息不完善则会调用 wx.getUserInfo 获取用户信息,否则直接返回 登录后的token

    // 2、这个地方出错的关键: 通过微信获取到用户信息以后,从redis 取得之前的openid、session_key等信息,

    // 加上用户信息 进行 signature = sha1( rawData + session_key ) 校验,这个地方有时候会出现校验失败的情况

    console.log(res.data)

      }

          })

        } else {

          console.log('登录失败!' + res.errMsg)

        }

      }

    })


    09-24
    赞同
    回复 1
    • 王志鹏
      王志鹏
      09-24
      你可以把打印出来的 rawData 和 session_key 在网页加密上面加密一下 然后对比一下和获取到的signature 是不是一样的
      09-24
      回复
  • 王志鹏
    王志鹏
    09-24

    代码能不能贴出来看看啊  你这样说也不知道你问题出在哪里

    09-24
    赞同
    回复 1
    • 曾经
      曾经
      09-24
      我只贴了部分代码,注释里面是我的逻辑,看下有没有问题
      09-24
      回复