微信公众号分享出现的报错和解决方法整合

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

开发微信时需要做特定的页面做分享时,根据官方提供的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( c u r l , C U R L O P T S S L V E R I F Y P E E R , t r u e ) ; c u r l s e t o p t ( curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt( curl,CURLOPTSSLVERIFYPEER,true);curlsetopt(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;

转载:https://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/1237.html

IOS分享的时候图片的链接地址 和 link 都需要在 JS安全域名下并且带http头。


@{
    ViewBag.Title = "xx梦想加油站";
    Layout = null;
}



    
    
    
    xx梦想加油站

    
    
    


二、IOS微信分享朋友圈成功后,不进入回调SUCCESS

   安卓机器微信分享成功之后,是可以进入回调,但是,部分IOS的机器却不进入回调

直接引入最新的微信jweixin.js 我引入的是

https://res.wx.qq.com/open/js/jweixin-1.3.2.js

问题就这样解决了

三、IOS环境下,微信分享失效问题

最近在做一个公众号,涉及到分享的功能,但是在安卓机上,自定义的分享配置参数能够被触发,而在ios苹果手机上却失效了,苦苦寻觅在百度上搜索解决办法,但都没有效果,,配置参数如下:

 var content = {
        title: '您的好友邀请你办信用卡啦', // 分享标题
        desc: '邀请好友办信用卡得奖金', // 分享描述
        link: 'http://ppl.hzqzinfo.com/cc-wechat/share.html?openId='+sessionStorage.openId+"&username="+sessionStorage.user_name+"&picid="+sessionStorage.picid, // 分享链接
        imgUrl: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1524029663610&di=3ace946ecf6b963b1fa1c47a7c94c25c&imgtype=0&src=http%3A%2F%2Fwww.68ecshop.com%2Fecshop_topic%2FDistribution%2Fimages%2Ficon_home.png', // 分享图标
        success: function () {},
        cancel: function () {}
    };
  1. ios分享图标不能超过32K
  2. link参数带中文或者特殊字符,带中文的url在安卓中应该也是会出问题的,但是安卓会自动encodeURIComponent(),而ios不会

我马上想到我的url参数中带了中文字符,于是乎将其encodeURIComponent()编码,再提交代码,ios上完美运行!!
以下是修改后的配置:

var content = {
        title: '您的好友邀请你办信用卡啦', // 分享标题
        desc: '邀请好友办信用卡得奖金', // 分享描述
        link: 'http://ppl.hzqzinfo.com/cc-wechat/share.html?openId='+sessionStorage.openId+"&username="+encodeURIComponent(sessionStorage.user_name)+"&picid="+sessionStorage.picid, // 分享链接
        imgUrl: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1524029663610&di=3ace946ecf6b963b1fa1c47a7c94c25c&imgtype=0&src=http%3A%2F%2Fwww.68ecshop.com%2Fecshop_topic%2FDistribution%2Fimages%2Ficon_home.png', // 分享图标
        success: function () {},
        cancel: function () {}
    };

链接 https://blog.csdn.net/zhuxiandan/article/details/80095996

你可能感兴趣的:(分享)