Heim  >  Fragen und Antworten  >  Hauptteil

javascript - 微信公众平台, config:invalid signature一直爆这个错误,求教如何解决?


然后哦 用这个校验和输出的是一致的也就是说 签名应该没问题吧 但是为什么手机上会显示无效呢 那个环节又出错了

PHPzPHPz2747 Tage vor11173

Antworte allen(46)Ich werde antworten

  • 伊谢尔伦

    伊谢尔伦2017-04-11 13:15:33

    这两天也遇到这个问题,查了两天发现是一个特别二的失误:
    我一直把开放平台的appid当作公众平台的在用,直到我膝盖中了一箭……

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 13:15:33

    当前url:http://www.xx.cn/h5/share.html 非常简单,生成签名的url一致.

    微信校验签名也通过

    代码部分如上,

    可在微信里却还一直报invalid 签名!!
    从上看到下,没找到这类问题的实际解决方案和原因!求指教啊!!

    Antwort
    0
  • ringa_lee

    ringa_lee2017-04-11 13:15:33

    我今天也碰到了这个问题,各种参数与签名均一致,但就是报签名错误。

    最后你猜怎么着,最后居然发现是因为页面中有一个嵌套了腾讯视频的 iframe ,因为 js 对 iframe 大小进行调整时改变了 src 值导致 iframe 上一个请求被取消并再次加载,然后就导致微信 js 接口报 invalid signature 的错误了。

    最后去掉了 iframe 自带的 src 属性,等 js 调整好大小后一次性加载,就解决了。

    奇葩吧,一个 iframe 里嵌套的视频,看上去毫不相关的东西居然影响了微信的 js 接口的签名验证。

    Antwort
    0
  • ringa_lee

    ringa_lee2017-04-11 13:15:33

    timestamp也要检查一下

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-11 13:15:33

    我给说一下我微信分享二次签名遇到的问题,我后台获取参数时候出的问题,原来通过map遍历参数,然后在拼接一下,导致参数顺序不对,签名有误。
    改正后的方式如下:

    if(request.getQueryString()!=null) {
            uri+="?"+request.getQueryString(); 
        }

    再次签名就正确了。主要原因还是签名的url和alert(location.href.split('#')[0])的url不一致。

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-11 13:15:33

    遇到这个问题 已经解决 方案来自本站网友 疯狂的蜗牛

    问题:获取微信的jsapi_ticket有两个URL地址
    一个是:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=wx_card
    另一个是:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi
    注意后面的type

    我用成了第一个type=wx_card微信卡券的地址 改用用第二个地址type=jsapi。。问题解决

    你可以检查下是不是这个问题

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-11 13:15:33

    大概就是当前URL和生成签名的URL不一致问题吧,说下我的问题。我用ajax请求的后台config参数,和LZ一样,签名没问题但是signature还是不可用,微信官方的文档里面的错误都筛过了,后来发现导致URL不一致的原因是GET和POST请求的问题,GET请求无法获取URL中&后的参数,导致URL不一致。So,很蠢的错误,但是可能也是比较容易被忽略的吧

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-11 13:15:33

    使用的是官网提供JS-SDk PHP Demo,出现invaild signature 打印地址时发现url为http://

    解决办法:在类文件jssdk.php中修改$url

    public function getSignPackage($host,$uri) {
    $url = "http://".$host.$uri;
    ......
    }
    \\\\$jssdk->GetSignPackage($_SERVER['HTTP_HOST'],$uri = $_SERVER['REQUEST_URI']);

    Antwort
    0
  • 阿神

    阿神2017-04-11 13:15:33

    本地程序生成的 签名 跟 官网通过的签名工具生成的签名 对比是一致的,但还是提示 invalid signature , 请试试看把access_token.json跟jsapi_ticket.json内容都清空

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-11 13:15:33

    如果是第三方公众号开发者,在使用JS SDK时获取ticket(https://api.weixin.qq.com/cgi...)时的请求参数access_token要使用authorizer_access_token。
    由于我之前使用的第三方公众号component_access_token导致出现了楼主类似的问题。

    Antwort
    0
  • StornierenAntwort