• 微信分享链接出现config:invalid signature错误的解决方法


    首先贡献jssdk下载地址:http://demo.open.weixin.qq.com/jssdk/sample.zip  不建议大家在*SDN上花钱买积分下载

    当开发微信时需要做特定的页面做分享时,根据官方提供的jssdk.php文件创建的签名数据包调试时,大家碰到的最多的错误而且解决最麻烦的大概就是signature错误了,如下图:

    微信分享链接出现config:invalid signature错误的解决方法

    分享时提示错误“{"errMsg":"config:invalid signature"}”

    一般出现这个错误多半是签名获取失败,而造成签名获取失败的原因各种各种,子钦在开发的时候也遇到过这种情况,搜索了不少网上教程,解决了自己的问题。接下来,子钦将这些解决方法统一整理列出来,希望可以帮到大家:

    1、APPID和APPSECRET填错

    这个错误可以到官方的调试页面获取access_token看看是否是正确,点击获取获取access_token

    根据返回的结果可以判断页面内的APPID和APPSECRET有没有出错,没有出错的话可以点击获取jsapi_ticket

    利用前面拿到的access_token 采用http GET方式请求获得jsapi_ticket,如果出错的话会返回对应的说明。

    点击进行确认签名算法校验

    点击查看全局返回码说明

    2、超过了每日的access_token获取上限

    官方限定每日2000次请求,所以如果没有缓存access_token的话,还是比较容易过限的。

    3、查看微信公共号状态是否不正常

    比如验证过期了,被封禁了等。

    4、确认config中nonceStr

    js中驼峰标准大写S, timestamp与用以签名中的对应noncestr, timestamp一致。

    5、确认url是页面完整的url

    请在当前页面alert(location.href.split('#')[0])确认,包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分,这里在文章《静态页面实现微信分享带缩略图、标题和描述》最后已做说明,大家可以自行修改好。

    6、配置curl是否使用ssl的带证书(https协议)访问开关

    找到官方提供的jssdk.php,找到代码:


      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
     

    将true改为false,因为一般我们是没有安装证书的(https协议),所以将true改为false就好,反之,如果网站安装了证书,则将false改为true。

    7、将网站所在服务器IP地址加入白名单

    微信分享链接出现config:invalid signature错误的解决方法

    8、反向代理问题

    如果以上查验绝没有解决问题,则查看下自己的服务器是否反向代理没有设置好,nginx配置反向代理代码:

    proxy_set_header Host $http_host;

    或者如下示例

    server {
            listen       80;
            server_name  test.test.com;
    
            location / {
                root   html;
                index  index.html index.htm;
                proxy_read_timeout 300;
                proxy_connect_timeout 300;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }

     9、access_token使用上限用完了(自己项目中出现了这种情况时间是2018.09.18)

    先上图

     上下图对比,你会发现接口请求次数达到了2000次,而且还在不断请求,估计我们的是有人在恶意请求接口或者恶意分享文章,接下来要对access_token/token做缓存处理:请求一次 有效时间是 2小时,把签名信息 存入表中 或者缓存中

     具体思路:

      每请求一次,把 当前时间戳 和 延后2小时 的时间戳 和签名一起存入表或者缓存。
      当下次需要签名时,直接去读取表、或缓存的数据,先判断当前时间是否在 有效期内

      如果在有效期内,则不用重新请求签名了,直接调用缓存或者查询表就可以了

    后记:微信公众号官方并没有就签名错误给出详细的排解方法,大家在开发的过程中难免出现各种问题导致签名错误,如果以上方法仍未解决您的问题,可以在下面留言,大家一起交流解决!

  • 相关阅读:
    NumPy 位运算
    NumPy 数组迭代
    NumPy 广播
    NumPy 基于数值区间创建数组
    NumPy 数组切片
    NumPy 基于已有数据创建数组
    NumPy 数组创建
    NumPy 数据类型
    NumPy ndarray
    区块链技术学习指引
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/9668440.html
Copyright © 2020-2023  润新知