/**
* ***说明***
* 在页面
引入微信jsSDK
* 微信浏览器分享到朋友圈或发送给微信朋友,需要引入这段脚本。
* 此脚本依赖于接口请求签名 http://consumer.huawei.com/cmkt/services/service/wx/sign
* 由服务器引起的签名不正确会导致设置的缩略图或标题失效
* 缩略图 取的是子级的第一个
标签jpg或png格式图
* 标题 取的是 这是标题 节点的文本
* 发送给朋友显示的描述取的是 content的值
* ***********此脚本仅在微信浏览器生效***********
*/
$.WeChat = function () {
var userAgentInfo = navigator.userAgent;
if (userAgentInfo.indexOf("MicroMessenger") >= 0) {
return true;
}
else {
return false;
}
}
function WechatShare(shareModel, successCallback, cancelCallback, errorCallback) {
var signUrl = "http://consumer.huawei.com/cmkt/services/service/wx/sign?url=" +
encodeURIComponent(window.location.href.split("#")[0]);
var appId = "wxe3b3a57fc490237b";
//请求签名
$.ajax({
url: signUrl,
type: "GET",
dataType: "jsonp",
jsonp: "jsonp",
success: function (data) {
var timestamp = data.timestamp;
var nonceStr = data.nonceStr;
var signature = data.signature;
//配置微信分享
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: appId, // 必填,公众号的唯一标识
timestamp: timestamp, // 必填,生成签名的时间戳
nonceStr: nonceStr, // 必填,生成签名的随机串
signature: signature,// 必填,签名,见附录1
jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
var shareInfo;
if (shareModel != null) {
shareInfo = shareModel;
} else {
shareInfo = {
url: window.location.href,
img: $($("body img:first-child:not([src*='.svg'])")[0]).attr("src"),
title: $("title").text(),
descript: $("meta[name='description']").attr("content")
};
}
//微信分享ready
wx.ready(function () {
//取分享的标题
var shareTitle = shareInfo.title;
//取分享的图片地址
var shareImgUrl = shareInfo.img;
//取被分享的链接
var shareUrl = shareInfo.url;
//取被分享的描述
var shareDescript = shareInfo.descript;
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.onMenuShareTimeline({
title: shareTitle, // 分享标题
link: shareUrl, // 分享链接
imgUrl: shareImgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
successCallback && successCallback();
},
cancel: function () {
// 用户取消分享后执行的回调函数
cancelCallback && cancelCallback();
}
});
//分享给朋友
wx.onMenuShareAppMessage({
title: shareTitle, // 分享标题
desc: shareDescript, // 分享描述
link: shareUrl, // 分享链接
imgUrl: shareImgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
successCallback && successCallback();
},
cancel: function () {
// 用户取消分享后执行的回调函数
cancelCallback && cancelCallback();
}
});
});
wx.error(function (res) {
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
console.log(JSON.stringify(res));
errorCallback && errorCallback(res);
});
},
error: function (err) {
console.error(err);
errorCallback && errorCallback(res);
}
});
}