微信分享包含两种,一是分享到朋友圈,另一种是分享给朋友。现在我详细介绍一下调用的流程:

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();
		});
	});
});