微信JSSDK提示invalid signature

新手上路,请多包涵

1、使用微信打开老是报invalid signature错误,截图如下:

clipboard.png

2、以下是后台输出原文:
签名原文:jsapi_ticket=HoagFKDcsGMVCIY2vOjf9kbCx7fg5SWrDRQKPVygt-TLxSnB7TYLwraONW8-7PWNJUkHKVnRuqrrRjlbGjr_Lg&noncestr=ac275964-c552-419b-bb04-548ac6d0fb99&timestamp=1542958777&url=http://www.baidu.com
签名后密文:0e3c7963e8b2a57e76138c5505edbc198b18fec5

3、在微信平台验真过的效果:

clipboard.png

完成与我上面签名一样

4、前台代码:

clipboard.png

我搞了好几天,找不出原因,哪位大侠运到过,指导下。谢谢了

阅读 3.9k
2 个回答

看下微信平台白名单ip 添加下。
要不然就是拼接链接问题排查下。

出于安全考虑,开发者必须在服务器端实现签名的逻辑。

所以,

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名
    jsApiList: [] // 必填,需要使用的JS接口列表
});

前端初始化需要的几个字段,除了 debugjsApiList都是从后台拿的,你在前台写死了,所以错了。

所以,通常的逻辑都是前端从后台拿到上面的几个字段,在前端完成初始化,然后添加初始化成功和失败的回调,示例:

var link = location.href
$.ajax({
  url: 'your_url', //后台给你提供的接口
  type: 'GET',
  data: { url: link },
  async: true,
  dataType: 'json',
  success: function(data) {
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
      appId: data.configMap.appId, // 必填,公众号的唯一标识
      timestamp: data.configMap.timestamp, // 必填,生成签名的时间戳
      nonceStr: data.configMap.nonceStr, // 必填,生成签名的随机串
      signature: data.configMap.signature, // 必填,签名,见附录1
      jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    })
    wx.ready(function(res) {
      wx.onMenuShareAppMessage({
        title: document.title,
        desc: document.title,
        link: link,
        imgUrl: Imgurl,
        trigger: function(res) {},
        success: function(res) {},
        cancel: function(res) {},
        fail: function(res) {}
      })
      wx.onMenuShareTimeline({
        title: document.title,
        link: link,
        imgUrl: Imgurl,
        trigger: function(res) {},
        success: function(res) {},
        cancel: function(res) {},
        fail: function(res) {}
      })
    })
    wx.error(function(res) {
      alert(res)
    })
  },
  error: function(error) {
    alert(error)
  }
})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题