收藏
回答

配置微信sdk的config时报错"config:fail,invalid signature"?

相关账号ID
测试号appId:wx0025cb26ffbe0a36


问题描述:

在配置微信 JS-SDK 时,我遇到了“config:fail, invalid signature”签名无效的错误。尽管我已经根据微信文档和微信校验工具仔细检查了签名的生成过程,但问题依然存在。目前我正在使用测试公众号进行测试,并将测试公众号的 JS 接口安全域名绑定到了本地 IP。以下是生成签名的后端代码和前端使用的截图。请帮忙分析可能导致“config:fail, invalid signature”错误的原因

错误截图:


前端关键代码:

后端node.js关键代码:

请求jspi_ticket接口时的type类型是jsapi

签名的计算过程代码图片:


补充微信h5控制台打印的config配置:

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

2 个回答

  • ¿
    ¿
    03-19

    补充几点:

    1、请求微信jsapi_ticket的type是jsapi

    2、jsapi是有效的

    3、使用微信校验工具生成的签名也不行https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

    03-19
    有用
    回复
  • A思维
    A思维
    03-19

    核查一下签名算法!!!

    03-19
    有用
    回复 5
    • ¿
      ¿
      发表于移动端
      03-19
      您好,您看出来有问题了吗?我核查后感觉并无问题呢
      03-19
      回复
    • A思维
      A思维
      03-19回复¿
      建议的后端代码修改:function generateSignature(jsapiTicket, nonceStr, timestamp, url) {
        // 1. 先解码 URL
        const decodedUrl = decodeURIComponent(url);
        // 2. 构建签名字符串(确保使用小写的 noncestr)
        const string1 = `jsapi_ticket=${jsapiTicket}&noncestr=${nonceStr}&timestamp=${timestamp}&url=${decodedUrl}`;
        // 3. 使用 sha1 进行加密
        const hash = crypto.createHash("sha1");
        hash.update(string1);
        return hash.digest("hex");
      }
      app.post("/h5/getJsSdk", async (req, res) => {
        const url = req.body.url;
        const nonceStr = Math.random().toString(36).substr(2, 15);
        const timestamp = Math.floor(Date.now() / 1000);
        // ... 其他代码 ...
        const signature = generateSignature(jsapiTicket, nonceStr, timestamp, url);
        res.json({
          code: 0,
          message: "success",
          data: {
            appId: APPID,
            timestamp,
            nonceStr,
            signature,
            url: decodeURIComponent(url), // 返回解码后的 URL
          }
        });
      });
      03-19
      回复
    • A思维
      A思维
      03-19
      其他检查点:
      1. 确保 jsapi_ticket 是有效的且未过期
      2. 验证测试号的 appId 是否正确配置
      3. 检查安全域名配置是否正确
      4. 建议开启 debug 模式(已经开启),查看详细的错误信息
      5. 使用微信 JS-SDK 签名校验工具进行验证:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
      如果按照以上修改后仍然有问题,建议:
      1. 在 debug 模式下打印出签名用的所有参数
      2. 使用微信官方的签名校验工具验证签名是否正确
      03-19
      回复
    • ¿
      ¿
      03-19回复A思维
      感谢,确实是这里的问题
      03-19
      回复
    • A思维
      A思维
      03-19回复¿
      不客气,我是民间最强小助手。
      03-19
      回复
登录 后发表内容