码迷,mamicode.com
首页 > 微信 > 详细

微信分享功能

时间:2015-08-27 16:48:27      阅读:481      评论:0      收藏:0      [点我收藏+]

标签:微信   分享   朋友圈   二次开发   微博   

最近在搞微信二次开发,所以,今天给大家带来一篇,关于微信分享的功能。有很多人不明白:既然人家腾讯已经把微信的功能做的这么强大了,为什么,我们还要搞二次开发呢?

呵呵,这个很好解释,我下面举个例子:你自己开发出来一款轻应用。在微信上预览,之后你点击了微信右上角的分享键。那么肯定的,你的轻应用被分享出去了。那么问题来了,你想知道,你的分享被点击了多少次,这个在微信上是看不到的。除非你有自己的微信公众帐号。通过微信公众帐号,发送图文消息,类似于轻应用的那种。可以看到点击量。

既然我们看不到被分享的次数,那么怎么办呢? 这就引出了,微信二次开发的概念。腾讯没有做的功能,我们可以自己做。当然,我们做的时候是需要调用人家腾讯的接口的。在微信分享的接口里面调用自己的接口。

#

  1. 要申请一个微信开发者帐号
    然后你会得到属于你自己的appID和appsecret,确保不让别人知道。
    然后你需要绑定安全域名。
    安全域名的话,大家可以申请一个花生壳。只需要1¥就可以申请下来。
    我们可以利用花生壳,把本机连接映射到外网。这样大家就可以访问了。
    在微信平台测试号上测试的时候也可以访问到
    技术分享
    技术分享
    2.
    在页面中要引用微信的js
    微信js
    也可以把js保存下来,放到自己项目的目录中。
 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
后台接口准备好。
后台接口得到时间戳、签名随机串、签名

3.通过config接口注入权限验证配置

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: ‘‘, // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: ‘‘, // 必填,生成签名的随机串
    signature: ‘‘,// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});

4.通过ready接口处理成功验证

wx.ready(function(){

    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

5.通过error接口处理失败验证

wx.error(function(res){

    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

});

6.

获取“分享到朋友圈”按钮点击状态及自定义分享内容接口

wx.onMenuShareTimeline({
    title: ‘‘, // 分享标题
    link: ‘‘, // 分享链接
    imgUrl: ‘‘, // 分享图标
    success: function () { 
        // 用户确认分享后执行的回调函数
    },
    cancel: function () { 
        // 用户取消分享后执行的回调函数
    }
});

7.

获取“分享给朋友”按钮点击状态及自定义分享内容接口

wx.onMenuShareAppMessage({
    title: ‘‘, // 分享标题
    desc: ‘‘, // 分享描述
    link: ‘‘, // 分享链接
    imgUrl: ‘‘, // 分享图标
    type: ‘‘, // 分享类型,music、video或link,不填默认为link
    dataUrl: ‘‘, // 如果type是music或video,则要提供数据链接,默认为空
    success: function () { 
        // 用户确认分享后执行的回调函数
    },
    cancel: function () { 
        // 用户取消分享后执行的回调函数
    }
});

8.

获取“分享到QQ”按钮点击状态及自定义分享内容接口

wx.onMenuShareQQ({
    title: ‘‘, // 分享标题
    desc: ‘‘, // 分享描述
    link: ‘‘, // 分享链接
    imgUrl: ‘‘, // 分享图标
    success: function () { 
       // 用户确认分享后执行的回调函数
    },
    cancel: function () { 
       // 用户取消分享后执行的回调函数
    }
});

9.

获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口

wx.onMenuShareWeibo({
    title: ‘‘, // 分享标题
    desc: ‘‘, // 分享描述
    link: ‘‘, // 分享链接
    imgUrl: ‘‘, // 分享图标
    success: function () { 
       // 用户确认分享后执行的回调函数
    },
    cancel: function () { 
        // 用户取消分享后执行的回调函数
    }
});

10.

获取“分享到QQ空间”按钮点击状态及自定义分享内容接口

wx.onMenuShareQZone({
    title: ‘‘, // 分享标题
    desc: ‘‘, // 分享描述
    link: ‘‘, // 分享链接
    imgUrl: ‘‘, // 分享图标
    success: function () { 
       // 用户确认分享后执行的回调函数
    },
    cancel: function () { 
        // 用户取消分享后执行的回调函数
    }
});




####下面给大家看一下完整代码。

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=640, user-scalable=yes, target-densitydpi=device-dpi">
    <link rel="dns-prefetch" href="http://res.wx.qq.com">
    <title>weixin.html</title>

    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script type="text/javascript">
        var vurl=window.location.href.split(‘#‘)[0];
        $.ajax({url:‘getInfoController‘, //调用后台接口得到时间戳、签名、随机串
            type:‘post‘,
            dataType:‘json‘,
            //async: false,
            data : {
                pageUrl:vurl
            },
            success:function(data){
                var time=data[0].timestamp;
                alert("时间戳:"+time);
                var nonceStr=data[0].nonceStr;
                alert("签名随机串:" +nonceStr);
                var signature=data[0].signature; 
                alert("签名:" +signature);
                wx.config({
                    debug: true, // 开启调试模式
                    appId: ‘wx18f437edbca63db7‘, // 必填,公众号的唯一标识
                    timestamp: time, // 必填,生成签名的时间戳
                    nonceStr: nonceStr, // 必填,生成签名的随机串
                    signature: signature,// 必填,签名,见附录1
                    jsApiList: [‘onMenuShareTimeline‘,
                    ‘onMenuShareAppMessage‘,
                    ‘onMenuShareQQ‘,
                    ‘onMenuShareWeibo‘] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                });
            },
            error:function(){
                alert("error");
            }
        });
    </script>
  </head>

  <body>
    <h1 id="test">测试微信分享。。</h1>
  </body>

  <script type="text/javascript">

    wx.ready(function(){
        wx.onMenuShareTimeline({     //分享到朋友圈
            title: ‘nihao‘, // 分享标题
            link: ‘‘, // 分享链接
            imgUrl: ‘https://mmbiz.qlogo.cn/mmbiz/UwcnVvztXiaHoFCCqH0AZ1I05nkBA2bwungj7yROIoAhSkX8zG0zMwtb03Q7GpKdaP5awaia3ibGvDUlBGOvEwCnQ/0?wx_fmt=gif‘, // 分享图标
            success: function () { 
                alert("哈哈,龙哥,成功了~~ ");
                // 用户确认分享后执行的回调函数
                //下面我们可以做自己的操作,调用自己的接口了。
            },
            cancel: function () { 
                alert("唉,龙哥,取消了~~ ");
                // 用户取消分享后执行的回调函数
            },
            fail:function(){
                alert("唉,龙哥,失败了~~ ");
            }
        });

        wx.onMenuShareAppMessage({
            title: ‘5330邹煜凯‘,
            link: vurl,
            imgUrl: "http://www.xxxx.com/fileupload/savefiles/20150827141750_871.png",
            desc: "5330邹煜凯", // 分享描述
            trigger: function (res) { 
            },
            success: function (res) {
            $.ajax({
                url:‘http://www.xxxx.com/templateApp/shareToFriends?t_id=3718‘,
                type:‘post‘,
                dataType:‘json‘,
                async:false,
                success:function(data){
                alert("恭喜,发送成功!");
                }
            });
            },
             cancel: function (res) { 
             },
             fail: function (res) { 
             }
        });
    });
// config信息验证失败会执行error函数,如签名过期导致验证失败 
 wx.error(function (res) {
     alert(res.errMsg);
}); 
  </script>
</html>

大家如果对微信二次开发不了解的。可以看

微信开发者文档

这里面的介绍比较详细。




版权声明:本文为博主原创文章,未经博主允许不得转载。

微信分享功能

标签:微信   分享   朋友圈   二次开发   微博   

原文地址:http://blog.csdn.net/moyanxuan_1993_2_24/article/details/48028735

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!