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

微信分享链接出现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;
}
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>xx梦想加油站</title>
</head>
<body>    
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <script type="text/javascript">
        wx.config({
            debug: false,
            appId: '@ViewBag.AppId',
            timestamp: @ViewBag.ts,
            nonceStr: '@ViewBag.noncestr',
            signature: '@ViewBag.signature',
            jsApiList: [
              'onMenuShareTimeline',
              'onMenuShareAppMessage',           
            ]
        });
        wx.ready(function() {
            //config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后
            var sharetitle='@ViewBag.Name 正在参加浦软梦想加油站活动。';
            var sharedescript='请你为我点亮梦想,快来一起参加吧! ';
            var sharelink='http://xxx.com/h5.html';
            var shareimgurl='http://m.xxx.com/Content/skin/images/cover.png';
 
            var shareData = {
                title: sharetitle,
                desc: sharedescript,
                link:sharelink,
                imgUrl:shareimgurl
            };
            //分享给朋友
            wx.onMenuShareAppMessage({
                title: sharetitle,
                desc: sharedescript,
                link: sharelink,
                imgUrl:shareimgurl,
                trigger: function (res) {
                    // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
                    alert('用户点击发送给朋友');
                },
                success: function (res) {
                    alert('已分享');
                },
                cancel: function (res) {
                    alert('已取消');
                },
                fail: function (res) {
                    alert(JSON.stringify(res));
                }
            });    
            
            //分享给朋友圈
            wx.onMenuShareTimeline({
                title: sharetitle,
                link: sharelink,   
                desc: sharedescript,
                imgUrl:shareimgurl,
                trigger: function (res) {
                    // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
                    // alert('用户点击分享到朋友圈');
                },
                success: function (res) {
                    // alert('已分享');
                },
                cancel: function (res) {
                    // alert('已取消');
                },
                fail: function (res) {
                    // alert(JSON.stringify(res));
                }
            });
 
            wx.onMenuShareAppMessage(shareData);
            wx.onMenuShareTimeline(shareData);
        });
        wx.error(function(res){
            // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
            alert(JSON.stringify(res));
        });
    </script>
</body>

二、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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值