收藏
回答

使用微信 JS 接口签名校验工具 还是无法 config jssdk?

使用的 jssdk 为 http://res.wx.qq.com/open/js/jweixin-1.6.0.js

已经配置 js 安全域名为 www.passcard.com.cn

公众号也经过审核认证

校验工具中使用从微信接口获取的 ticket 并填写其他参数 获取签名

string1 长这样 jsapi_ticket=LIKLckvwlJT9cWIhEQTwfOQCaPqexMmnIskF6FpAKMgwdaf9HMwH1r6j-qcYQh9UIgjcpOzLL_z8HqmZI7hVcg&noncestr=BOwczcI8YzJZGsEL&timestamp=1711439262&url=https://www.passcard.com.cn

使用该签名和对应的 appid 等其它参数

appId: 'wxb707489e39e13d9b',
timestamp: '1711439262',
nonceStr: 'BOwczcI8YzJZGsEL',
signature: '283616fb434dac1abc6b888e0f70c7d6af53b771',
jsApiList: ['checkJsApi'],


调用 jssdk config() 后会报错 config:fail,invalid signature

诡异的是如果使用官方 demo 的地址 比如 https://www.weixinsxy.com/jssdk/

反而验签通过 提示错误 config:fail,invalid url domain

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

5 个回答

  • จุ๊บ
    จุ๊บ
    03-26

    怀疑你参与签名的url 并不是当前页面的完整url

    03-26
    有用
    回复 6
    查看更多(1)
  • hello world
    hello world
    03-26

    signature不对,找你们后端处理一下吧

    03-26
    有用
    回复 1
  • 黑子
    黑子
    03-26

    补充一句 附录 5 的第 2 条的检查项都已经确认无误了 依旧无法拉起 sdk

    03-26
    有用
    回复
  • 奎
    03-26

    invalid signature签名错误。建议按如下顺序检查:

    1. 确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
    2. 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
    3. 确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
    4. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
    5. 确保一定缓存access_token和jsapi_ticket。
    6. 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。


    03-26
    有用
    回复 11
    • 黑子
      黑子
      03-26
      1 签名是从微信官方网页上获取的
      2 配置贴上上面了 应该没有书写错误
      3 同上
      4 可以确定
      5 -
      6 目前使用的就是域名的主页面的网址 是因为动态验签不通过 我做测试写的 预料之中的验签不通过
      03-26
      回复
    • 奎
      03-26回复黑子
      看了你给的网站,进去后会转/home的网址,进任何一个帖子会跳/testtest的页面,这任何一个都不满足第六条规格
      03-26
      回复
    • 奎
      03-26回复黑子
      你加签的url是https://www.passcard.com.cn/hello/,但是location.href获得是https://www.passcard.com.cn/hello???
      03-26
      回复
    • 黑子
      黑子
      03-26
      你说的情况 我没有遇到 要不你直接访问 https://www.passcard.com.cn/hello
      03-26
      回复
    • 奎
      03-26回复黑子
      而且,签名是进页面就加签,不会点分享的时候才做
      03-26
      回复
    查看更多(6)
  • Mr.Zhao
    Mr.Zhao
    03-26

    没看懂这个“反而验签通过”,说的啥意思

    03-26
    有用
    回复 21
    • 黑子
      黑子
      03-26
      1 用 appId 对应的 js 安全域名的网址 报错 config:fail,invalid signature


      2 用官方 demo 的网址 报错 config:fail,invalid url domain


      以我粗浅理解 第一个是验签没通过 第二个是验签过了解析出 url 之后发现与 ticket 对应的 appId 账号下设置的安全域名不匹配


      所以我说“反而验签通过”
      03-26
      回复
    • Mr.Zhao
      Mr.Zhao
      03-26回复黑子
      先校验url,后校验参数的。我不知道你是具体怎么用的js安全域名网址,访问地址有吗
      03-26
      回复
    • 黑子
      黑子
      03-26
      网址 https://www.passcard.com.cn
      1 手机注册登陆
      2 点击任意一个帖子的发帖人头像
      3 进入主页
      4 点击分享按钮
      5 选择分享至微信
      03-26
      回复
    • Mr.Zhao
      Mr.Zhao
      03-26回复黑子
      你搞个测试页面,我不想手机注册
      03-26
      回复
    • 黑子
      黑子
      03-26
      或者 直接访问 https://www.passcard.com.cn/hello
      不登录也行
      03-26
      回复
    查看更多(16)
登录 后发表内容