微信分享包含两种,一是分享到朋友圈,另一种是分享给朋友。现在我详细介绍一下调用的流程:
1.查看微信公众平台开发者文档
http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
2.JS文件的引入
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
3.通过config接口注入权限验证配置
wx.config({ de //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '${appId}', // 必填,公众号的唯一标识 timestamp: '${timestamp}', // 必填,生成签名的时间戳 nonceStr: '${nonceStr}', // 必填,生成签名的随机串 signature: '${signature}',// 必填,签名,见附录1 jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });
注意:在调用分享接口前一定确保config的配置成功,可以通过debug:true返回的信息来查看appId,timestamp,nonceStr,signature是否获取成功。一般调用接口的地方都会通过拦截器来获取appId,timestamp,nonceStr,signature。
4.通过ready接口处理成功验证
wx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 });
5.分享接口的调用
$(function() { function submitShare(){ openLoadLayer(); var postData = getInitPageParams(); postData.qaId='${keyId}'; postData.openId='${openId}'; postData.share=1; $.post( BOM.rootURL + "wxactivityjson/saveUserinfo.action",postData,function(data) { closeAllLayer(); if(data.actionErrors&&data.actionErrors.length>0){ alert(data.actionErrors[0]); }else{ alert('分享成功'); } }, 'json'); } var wxTitle = "快来猜一猜"; var wxDesc = "碰一下运气,猜对了,大奖就是你的了!"; var linkurl = "http://wx2.jerehsoft.com/xiaov/wxactivity/appid_"+'${appId}'+"/qanda.action?keyId="+'${keyId}'; var imgUrl = "http://wx2.jerehsoft.com/xiaov/activity/answer/img/share.jpg"; wx.ready(function(){ //alert(111); wx.onMenuShareAppMessage({ title : wxTitle, // 分享标题 desc : wxDesc, // 分享描述 link : linkurl, // 分享链接 imgUrl : imgUrl, // 分享图标 trigger: function (res) { // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回 }, success: function (res) { submitShare(); }, cancel: function (res) { alert('已取消分享'); }, fail: function (res) { //alert(JSON.stringify(res)); alert('分享失败'); } }); wx.onMenuShareTimeline({ title : wxTitle, // 分享标题 link : linkurl, // 分享链接 imgUrl : imgUrl, // 分享图标 trigger: function (res) { // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回 }, success: function (res) { submitShare(); }, cancel: function (res) { alert('已取消分享'); }, fail: function (res) { alert('分享失败'); } }); wx.hideOptionMenu(); }); wx.error(function(res){ alert(JSON.stringify(res)); // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 }); $('.share-btn').click(function () { wx.ready(function() { wx.showOptionMenu(); //alert('点击右上角菜单按钮分享给朋友'); showShare(); }); }); });