您的位置:首页 > 移动开发 > 微信开发

微信分享功能

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>


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

微信开发者文档

这里面的介绍比较详细。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息