技术饭

微信分享:分享签名、分享链接需要注意的细节

copylian    0 评论    14942 浏览    2023.01.11

微信分享JSSDK在1.4.0之后,废弃了很多的方法如:onMenuShareTimelineonMenuShareAppMessageonMenuShareQQ等,取而代之的是:自定义“分享给朋友”及“分享到QQ”按钮的分享内容(updateAppMessageShareData)、自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容(updateTimelineShareData)。

具体请参考分享接口


签名部分问题URL可以参考:https://www.copylian.com/technology/191.html

本文主要是处理微信分享url地址的问题:

<script src="js/jquery.min.js"></script>

<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascript"></script>

<script type="text/javascript">

    $(function(){

                    //网页分享:当前网址(浏览器访问的完整url),由于微信给出的签名url地址必须是当前网址,所以需要把当前的网址传给后端做加密签名

                    var url = 'https://www.copylian.com/weixinabc.php/test/testonline.html';


                    //发送ajax

                    $.post('https://www.copylian.com/weixinabc.php/thirdplatform/getSign', {brand_id:10,url:url}, function(data){

                        WechatData = {

                            //初始配置

                            debug: true,

                            appId: data.data.appId,

                            timestamp: data.data.timestamp,

                            nonceStr: data.data.nonceStr,

                            signature: data.data.signature,

                            hideOptionMenu:false,


                            //分享配置

                            title: '跨域ajax异步测试微信分享功能 - By CopyLian\'s Blog',


                            // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致,这个很重要这里只验证域名签名的url没关系

                            // link: data.data.url,

                            link: "https://www.copylian.com?invite_code=12345", // 只要域名已经配置在js安全域名即可,参数可以随意配置

                            // link: "https://www.copylian.com?invite_code=12345",

                            img: 'https://www.copylian.com/Public/Uploads/bloginfo/images/20161223/thumb/thumb_20161223155611_585cd89b20cc5.jpg',

                            desc: '跨域ajax异步测试微信分享功能,这个功能研究了有一段时间了。',

                        };

                        //微信初始化

                        wechatInit(WechatData);

                    });

        });


        /**

         * [wechatInit 微信分享初始化]

         * @return {[type]} [description]

         */

        function wechatInit(WechatData){

            wx.config({

                debug: WechatData.debug,

                appId: WechatData.appId,

                timestamp: WechatData.timestamp,

                nonceStr: WechatData.nonceStr,

                signature: WechatData.signature,

                jsApiList: [

                    // 'onMenuShareTimeline', // 废弃

                    // 'onMenuShareAppMessage',  // 废弃

                    // 'onMenuShareQQ',  // 废弃

                    // 'onMenuShareWeibo',  // 废弃

                    // 'hideOptionMenu',

                    // 'showOptionMenu',

                    // 'scanQRCode',

                    'updateAppMessageShareData',

                    'updateTimelineShareData',

                    'getSetting'

                ]

            });


            wx.ready(function(){

                //分享到朋友圈

                wx.updateTimelineShareData({

                    title: WechatData.title, // 分享标题

                    link: WechatData.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安域名一致

                    imgUrl: WechatData.img, // 分享图标

                    success: function () {

                        // 用户点击了分享后执行的回调函数

                        console.log("分享到朋友圈成功");

                    },


                    cancel: function () {

                        // 用户取消分享后执行的回调函数

                        console.log("分享被取消,请重新分享");

                    }

                });


                //分享给朋友

                wx.updateAppMessageShareData({

                    title: WechatData.title, // 分享标题

                    desc: WechatData.desc, // 分享描述

                    link: WechatData.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安   全域名一致

                    imgUrl: WechatData.img, // 分享图标

                    type: 'link', // 分享类型,music、video或link,不填默认为link

                    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

                    success: function () {

                        // 用户点击了分享后执行的回调函数

                        console.log("分享给朋友成功");

                    },


                    cancel: function () {

                        // 用户取消分享后执行的回调函数

                        console.log("分享被取消,请重新分享");

                    }

                });

            });

        }
    </script>


总结:

1、拿去签名的url必须是当前完整的访问地址,也就是签名的url与访问网址一致

2、分享的出去的url必须已经配置在公众号开发域名中,并不需要与签名url保持一致,任意参数都可,三方平台代发起的那就去三方平台的开发资料里配置,单独公众号那就在公众号里面设置

只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢