微信分享功能
2015-08-27 15:44
477 查看
最近在搞微信二次开发,所以,今天给大家带来一篇,关于微信分享的功能。有很多人不明白:既然人家腾讯已经把微信的功能做的这么强大了,为什么,我们还要搞二次开发呢?
呵呵,这个很好解释,我下面举个例子:你自己开发出来一款轻应用。在微信上预览,之后你点击了微信右上角的分享键。那么肯定的,你的轻应用被分享出去了。那么问题来了,你想知道,你的分享被点击了多少次,这个在微信上是看不到的。除非你有自己的微信公众帐号。通过微信公众帐号,发送图文消息,类似于轻应用的那种。可以看到点击量。
既然我们看不到被分享的次数,那么怎么办呢? 这就引出了,微信二次开发的概念。腾讯没有做的功能,我们可以自己做。当然,我们做的时候是需要调用人家腾讯的接口的。在微信分享的接口里面调用自己的接口。
#
要申请一个微信开发者帐号然后你会得到属于你自己的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>
大家如果对微信二次开发不了解的。可以看
微信开发者文档
这里面的介绍比较详细。
相关文章推荐
- 社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
- 【CF 应用开发大赛】IT Share(IT分享网)
- 【CF应用开发大赛】微博社交简历
- 微博回应“用户信息被出售”事件:已上报司法机关
- 微信悄悄升级群聊功能:个人微信营销号的福音
- 我是运营,我没有假期
- 如何做到日消息量100万的微信公众号?
- 论微信取消推送功能的可能性(原创)
- 微信的成功,靠的是QQ导流吗?
- [网络资讯]新浪微博新版三栏布局开放公测
- 开始我觉得新浪微博傻,现在才慢慢明白新浪微博的高瞻远瞩
- 微信服务号推送模板消息接口
- 新版本susymenu树形菜单,请大家指教、分享
- jQuery+PHP+ajax实现微博加载更多内容列表功能
- PHP限制页面只能在微信自带浏览器访问的代码
- javascript实现类似百度分享功能的方法