• 微信JS-SDK1.6用updateTimelineShareData分享朋友圈无效的坑


    <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测试取消分享不起作用。

    感谢这篇文章 https://niuchao.com/technology/690 的作者,我也是参考他的总结测试出来的。

  • 相关阅读:
    ps 命令
    wc 命令
    grep 命令
    date 命令
    cal 命令
    df 命令
    secureCrt 开启Linux上的oracle服务
    动态规划_01背包问题_Java实现
    贪心算法_01背包问题_Java实现
    贪心算法_01背包问题_Java实现
  • 原文地址:https://www.cnblogs.com/zys0597/p/14039333.html
Copyright © 2020-2023  润新知