微信JS-SDK1.6用updateTimelineShareData分享朋友圈无效处理

微信打开提示updateTimelineShareData:ok和updateAppMessageShareData:ok,但是分享出来依然是链接,并没有配置成功之后的分享样式。原因是微信分享的配置网页,只有通过公众号/扫码/分享卡片这些渠道打开,才能分享,直接在微信打开某一个链接,分享出来的依然是链接,不必纠结。

<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="/draw/jquery.rotate.min.js"></script>
<!--JS SDK 1.6-->
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script>
    $(function() {
        var $btn = $('.g-lottery-img');// 旋转的div
        var playnum = 1; //初始次数,由后台传入
        $('.playnum').html(playnum);//显示还剩下多少次抽奖机会
        var isture = 0;//是否正在抽奖
        var clickfunc = function() {
            var data = [1, 2, 3, 4, 5, 6];//抽奖
            //data为随机出来的结果,根据概率后的结果
            data = data[Math.floor(Math.random() * data.length)];//1~6的随机数
            switch(data) {
                case 1:
                    rotateFunc(1, 0, '恭喜您获得2000元理财金');
                    break;
                case 2:
                    rotateFunc(2, 0, '恭喜您获得2000元理财金2');
                    break;
                case 3:
                    rotateFunc(3, 0, '恭喜您获得2000元理财金3');
                    break;
                case 4:
                    rotateFunc(4, -60, '谢谢参与4');
                    break;
                case 5:
                    rotateFunc(5, 120, '谢谢参与5');
                    break;
                case 6:
                    rotateFunc(6, 120, '谢谢参与6');
                    break;
            }
        }
        $(".playbtn").click(function() {
            if(isture) return; // 如果在执行就退出
            isture = true; // 标志为 在执行
            if(playnum <= 0) { //当抽奖次数为0的时候执行
                alert("没有次数了。分享后可多获取一次抽奖机会。");
                $('.playnum').html(0);//次数显示为0
                isture = false;
            } else { //还有次数就执行
                playnum = playnum - 1; //执行转盘了则次数减1
                if(playnum <= 0) {
                    playnum = 0;
                }
                $('.playnum').html(playnum);
                clickfunc();
            }
        });
        var rotateFunc = function(awards, angle, text) {
            isture = true;
            $btn.stopRotate();
            $btn.rotate({
                angle: 0,//旋转的角度数
                duration: 4000, //旋转时间
                animateTo: angle + 1440, //给定的角度,让它根据得出来的结果加上1440度旋转
                callback: function() {
                    isture = false; // 标志为 执行完毕
                    alert(text);
                }
            });
        };
        //JS-SDK的页面必须先注入配置信息
        wx.config({
            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: '[[${appId}]]', //后台 必填,公众号的唯一标识
            timestamp: [[${timestamp}]], // 必填,后台生成签名的时间戳
            nonceStr: '[[${nonceStr}]]', // 必填,后台生成签名的随机串
            signature: '[[${signature}]]',// 必填,后台签名  //
            jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage','onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone']
        });
        //  jsApiList: ['updateTimelineShareData']
    
        //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
        //wx.ready(function () {      //必须注释掉 否则页面加载就提示分享成功了
            //分享到朋友圈
            wx.updateTimelineShareData({//updateTimelineShareData
                title: '抽奖活动', // 分享标题
                link: 'http://wyq4s7.xxx.cc/api/draw', // 分享链接,
                //注意:该链接域名或路径必须与当前页面对应的公众号JS安全域名一致   //不要写错了 不然会提示  系统错误,错误码:63002,invalid signature
                imgUrl: 'http://wyq4s7.xxx.cc/draw/playbtn.png', // 分享图标
                success: function () {
                    alert("分享成功");//不要用alert,不然错误无法wx.error无法执行
                    console.log("分享成功");
                   // playnum = 1; //应该在后台设置并获取
                   // $('.playnum').html('1');
                },
                cancel: function () {
                    console.log("分享取消");
                }
            });
        //});
 
        wx.ready(function () {//文档的即将废弃,其实分享用的就是旧方法,这个上面的新的分享updateTimelineShareData根本没有作用,但是不加分享无法成功
            wx.onMenuShareTimeline({
                title: '抽奖活动2', // 分享标题
                link: 'http://wyq4s7.xxx.cc/api/draw', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: 'http://wyq4s7.xxx.cc/draw/playbtn.png', // 分享图标
                success: function () {
                    // 用户点击了分享后执行的回调函数
                    alert("分享成功2");//不要用alert,不然错误无法wx.error无法执行
                    console.log("分享成功2");
                    playnum = 1; //应该在后台设置并获取
                    $('.playnum').html(playnum);
                },
                cancel: function () {
                    console.log("分享取消2");
                }
            });
        });
        //必须放wx.ready后面 否则无法执行
        wx.error(function(res){
          //alert(res.errMsg);
          //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        });
    });

以上为正常的测试代码,分享朋友圈成功后,多增加一次抽奖机会。

总结

新版本的接口updateTimelineShareData要放到wx.ready的外面,否则页面一加载完会自动弹出分享成功的信息

旧版本的接口onMenuShareTimeline要放到wx.ready的里面,否则无法分享成功,

反正新旧版本的2个分享朋友圈的接口都要写上。缺少其中一个都不行。

还有就是wx.config里面

jsApiList: ['updateTimelineShareData'] 只写一个根本无法分享,要把旧的接口都加上,改为如下
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage','onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone']

环境声明:如上代码是用微信开发工具测试成功的。真机iphone测试取消分享不起作用。

附:===============================================================

微信自定义分享JS-SDK问题汇总及解决办法

微信自定义分享JS-SDK是一个很好用的功能,一直用得好好的,最近发现自定义分享的图标和标题都不管用了。去官方查询了一下,原来已经升级到JS-SDK1.6版本了。于是,我调试了好久,把遇到的问题汇总一下,并在我的“大超小志”列出解决办法。

打开了debug,但是没有任何反应

在wx.config里面有个debug功能,设置为false就是关闭,设置为true就是打开。我设置为true了,但是没有任何反应。于是,我打开360浏览器的“工具”-“开发人员工具”查看,发现有js错误“Uncaught SyntaxError: Invalid or unexpected token”,显示的是“desc”这一行,也就是分享描述里面出问题了。

我查看一下desc里面的内容,没有特殊字符,又换了一篇文章就没有报错,然后又连续换了好几篇文章都没有问题,唯独这一篇文章出问题了,但是里面也没有什么特殊的东西,估计是JS-SDK 的兼容性不够好吧。

既然只有这一篇文章有问题,就暂且先不管它了,换到其他文章后debug信息就出来了。如果你很多篇文章都有这个问题,你可以直接把desc的分享描述都写成“点击查看详细内容”。

Permission denied接口权限问题

遇到这个问题一般有几种可能:

  • 公众号必须是企业名下的已经认证过的,个人的订阅号现在已经没有这个功能了。
  • url不对,link那里最好填入“window.location.href.split(‘#’)[0]”,另外,需要检查一下url里面有没有多余的斜杠。
  • 调用的接口没有在 jsApiList 里面配置。

分享不成功,没有自定义的标题和图标

这个问题是 JS-SDK 新版本的大坑,在新版本里,“发送给朋友”是“updateAppMessageShareData”,“分享朋友圈”是“updateTimelineShareData”,而老版本对应是“onMenuShareAppMessage”和“onMenuShareTimeline”。帮助文档里面明确说了,老版本的接口即将弃用。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
TP源码网 » 微信JS-SDK1.6用updateTimelineShareData分享朋友圈无效处理

提供最优质的资源集合

立即查看 了解详情