收藏
回答

小程序 用户数据签名校验 失败

业务流程如下:

  1. 在前端用wx.login获取code,用wx.getUserInfo获取用户相关信息(下文称UserInfo)一起wx.request到服务器。

  2. 服务器先用收到的code获取openid与session_key。

  3. 用步骤2中获取的session_key与步骤1中获取的UserInfo.rawData计算出新的signature。

  4. 对比UserInfo.signature与步骤3中重新计算出的signature。


以上签名校验失败的情况会偶尔发生。不知是什么原因?


ps.

c# 计算签名代码

SHA1 sha1 = new SHA1CryptoServiceProvider();

byte[] source = Encoding.UTF8.GetBytes(rawData + sessionKey);

byte[] target = sha1.ComputeHash(source);

string result = BitConverter.ToString(target).Replace("-", "").ToLower();


回答关注问题邀请回答
收藏

4 个回答

  • 王通波
    王通波
    2天前

    根据文档,开发者应该在询问按钮出现前就进行wx.login调用,否则就会出错,

    在onglunch时先调用wx.login,根据code 获取到openid和session_key,

    在页面加载完成后点击登录获取用户信息时,此时验证一致,

    如果wx.login获取code,和wx.getUserInfo同一时间处理则 签名不一致。


    2天前
    有用
    回复
  • c
    c
    05-27

    现在还有这个问题,官方没回复吗?

    05-27
    有用
    回复
  • 楽
    2019-04-04

    我们 golang 也遇到,量还不小

    2019-04-04
    有用
    回复
  • Dada.NET
    Dada.NET
    2018-06-12

    我也遇到这个问题,偶尔发现有些用户,会出现这个问题。大部分情况下是正常的。不知道是否有大神知道是什么原因呢?

    2018-06-12
    有用
    回复
登录 后发表内容