收藏
回答

微信公众号开发调用jssdk,配置时总是 invalid signature ,提示非法签名?

首先贴上必要信息:

开发者ID(AppID):wx3806a4c78e7bf173

原始ID:gh_2314fcde77a4



以上是公众号本身的配置

接下来放一下,我这边的config代码

const modeList = [
  'updateAppMessageShareData',
  'updateTimelineShareData',
  'onMenuShareAppMessage',
  'onMenuShareTimeline',
];
 
const initConfig = async (res) => {
  const options = {
    debug: !isProd,
    appId: res.appId, // 必填,公众号的唯一标识
    timestamp: res.timestamp, // 必填,生成签名的时间戳
    nonceStr: res.nonceStr, // 必填,生成签名的随机串
    signature: res.signature, // 必填,签名,见附录1
    jsApiList: modeList,
  }
  console.log('config options::----------------------------', options);
  wx.config(options);
  // ready
  wx.ready(() => {
    console.log('config success::----------------------------');
    // 分享到朋友圈
    wx.updateTimelineShareData({
      title: '', // 分享标题
      link: '', // 分享链接
      imgUrl: '', // 分享图标
      success: function () {
        // 用户确认分享后执行的回调函数
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
    // 分享给朋友
    wx.updateAppMessageShareData({
      title: '', // 分享标题
      link: '', // 分享链接
      imgUrl: '', // 分享图标
      desc: '', // 分享描述
      success: function () {
        // 用户确认分享后执行的回调函数
      },
      cancel: function () {
        // 用户取消分享后执行的回调函数
      },
    });
  })
  // error
  wx.error((res) => {
    console.log('catch config error :: =============== ::', res);
  })
}

以上代码执行之后出现如下问题

{
  errMsg: "config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][]"
  jsApiList: []
}

差了错误代码之后,发现是非法签名,好了,我先去了https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign这个校验网站校验了,signature 没有问题两边一致,但是config一直提示非法。

然后我去了https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html这边看常见解决办法。试了个遍。然而并没有效果,另外,恕我直言这个文档真实辣鸡。可能你们的核心已经是小程序了,但是小程序的BUG也一堆没修。


然后吐槽一下,这个错误码的返回,之前有返回过config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][undefind] 这样的格式,还不容易变成 config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][] 这样我也不知道啥问题,就这几个参数,咱写写明白行不,URL错就提示URL错,就一个签名错误???wtf,这里太笼统了!

好了说到URL错,好网上说99%的错误都是URL导致的,好的尝试了各种办法,并没有什么用,已经调试了不知道几天了,最后只能哀求官方帮我解决一下,帮我看看问题到底在哪里,头发都要秃了。

我用的是SPA (vue) HASH模式(https://xxx.com/#/)取得地址为 https://xxx.com/

单凡我有一点办法都不会来这请教

综上,请赐教!求快速反馈!

顺便吐槽,标题为什么一定要问号,我就是个陈述句,阐述问题而已!

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

27 个回答

  • 做你的超级英雄
    做你的超级英雄
    2020-07-08

    2020-07-08
    有用
    回复
  • 苏
    2020-04-26

    我程序昨天还好好在用,今天就一直提示这个。怎么解决。在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 校验的和结果都一样,但是就是提示config:fail,Error: 系统错误,错误码:63002,invalid signature

    2020-04-26
    有用
    回复
  • ShawnWang
    ShawnWang
    2019-12-22

    我是ticket放在 全局变量 但是一直报错 签名无效

    2019-12-22
    有用
    回复
  • H2O
    H2O
    2019-11-28

    注意一下,接口,参考文档给的接口是card(什么优惠卡就参考接口),要用公共的哪个接口地址,这坑很大!我也搞了几天。

    2019-11-28
    有用
    回复
  • 2019-10-31

    请教一个问题,“JS接口安全域名”到底是什么域名,不应该是后端服务器所用的域名吗?毕竟获取token、ticket都是在后端获取的。

    2019-10-31
    有用
    回复 4
    • Whatever Who Care
      Whatever Who Care
      2019-11-12
      是你前端使用js的页面的域名,比如你用Vue,你打包后部署的服务器域名就是
      2019-11-12
      回复
    • 💋luna
      💋luna
      2019-11-13
      请问获取token、ticket,前端能获取吗?还是只能后台获取返给前端呀
      2019-11-13
      1
      回复
    • Whatever Who Care
      Whatever Who Care
      2019-11-25回复💋luna
      你可以用浏览器直接访问测试下,如果用前端直接发请求会跨域,即使你用了jsonp也不允许,Java,Python,PHP,nodejs这些官方有案例,可以简单调试下直接使用
      2019-11-25
      回复
    • 落雪无声
      落雪无声
      2019-12-23
      请教一个问题: 如果移动端项目数据是由后台提供,移动端和后台项目不是在同一个域名下, 这样的话应该配置那个域名,是移动端的还是数据提供方的
      2019-12-23
      回复
  • 阿白
    阿白
    2019-09-29

    我也请教一下:我是angular项目,也是hash模式,传给后台签名的页面地址如果取#前面那部分的话,那岂不是每个页面都一样了?形式都是https://www.baidu.com/#/

    2019-09-29
    有用
    回复 12
    • \^gjy$\
      \^gjy$\
      2019-09-29
      不需要到#,只需要https://www.baidu.com/这部分。hash模式可以认为每个页面都用相同的url注册,并且只需要在应用初始化的时候注册。但是需要小心的是,分享出去的链接再点回来要处理URL会带一些微信加上去的参数,导致初始化失败
      2019-09-29
      回复
    • \^gjy$\
      \^gjy$\
      2019-09-29
      你可以简单的认为HASH模式是传统的单页内锚点互相跳转的做法,history是多页互跳的做法。
      2019-09-29
      回复
    • 阿白
      阿白
      2019-09-29回复\^gjy$\
      我参与签名的是https://www.baidu.com/,签名也成功了。但是支付页面提示路径未注册,也就是后面那部分"/mall/order/confirm",所以我想说,是不是要从?参数处截取
      2019-09-29
      回复
    • 阿白
      阿白
      2019-09-29回复\^gjy$\
      而且,为什么签名成功,但调用微信分享只弹出了个{errMsg: "updateAppMessageShareData:ok"}
      2019-09-29
      回复
    • \^gjy$\
      \^gjy$\
      2019-09-29回复阿白
      支付的话实不一样的,支付有还要去商户平台设置支付安全路径
      2019-09-29
      回复
    查看更多(7)
  • 小毕
    小毕
    2019-09-28

    问题解决了吗? 怎么解决的? 我也遇到同样的问题了。 一直63002,直接把以前项目上的代码搬过来也是这个报错

    2019-09-28
    有用
    回复 4
    • \^gjy$\
      \^gjy$\
      2019-09-29
      解决了,我这边是因为后端获取的js_ticket用的appId错了,用成小程序的了,但是返回给前端的appId是正确的公众号appId,导致整个算法和前端都找不到错误。最后从头到尾看了好几遍发现了问题。
      2019-09-29
      回复
    • 小毕
      小毕
      2019-09-29回复\^gjy$\
      我的是ticket获取错误了。
      2019-09-29
      回复
    • ShawnWang
      ShawnWang
      2019-12-22回复小毕
      怎么知道是ticket错误的
      2019-12-22
      回复
    • Clarence
      Clarence
      2020-02-26回复\^gjy$\
      请问你是在小程序里面webview调用jssdk吗?appId用公众号的?
      2020-02-26
      回复

正在加载...

登录 后发表内容
问题标签