默认在微信中打开的网页,微信分享后,标题只显示公众号名称,描述为网页URL,当我们想要微信分享后的标题、内容、图表、链接都是自定义内容,则需要集成微信JS-SDK的分享接口,在分享所在的页面注入JS-SDK权限验证,监听拦截分享接口,设置自定义分享的标题、内容、图标和链接。
1)在微信公众号后台绑定分享URL所在的域名
2)引入微信js-sdk js文件
3)config接口注入权限验证配置,config注入权限时,需要访问微信接口获取临时临牌和SHA1加密串,验证临牌通过后执行ready接口
StringBuffer buffer = new StringBuffer();
buffer.append("https://api.weixin.qq.com/cgi-bin/token?");
buffer.append("appid="+map.get("appid"));
buffer.append("&secret="+map.get("secret"));
buffer.append("&grant_type=client_credential");
String resultMsg = SendUtils.sendGet(buffer.toString(), "UTF-8");
StringBuffer buffer = new StringBuffer();
buffer.append("https://api.weixin.qq.com/cgi-bin/ticket/getticket?");
buffer.append("access_token="+access_token);
buffer.append("&type=jsapi");
String ticket = SendUtils.sendGet(buffer.toString(), "UTF-8");
String noncestr = WXUtil.getNonceStr();
//生成签名
SortedMap
4)ready接口处理成功验证
5)自定义“分享给朋友”等接口的分享内容
var timestamp = data.timestamp;
var nonceStr = data.nonceStr;
var signature = data.signature;
wx.config({
debug: true,
appId: wxAppId,
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: [
'onMenuShareAppMessage',
'onMenuShareTimeline',
'hideMenuItems'
]
});
wx.ready(function () {
wx.hideMenuItems({
menuList: [
'menuItem:share:qq', // 分享道QQ
'menuItem:share:weiboApp',//分享给微博
'menuItem:share:QZone' // 分享到QQ空间
],
success: function (res) {
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
// 2. 分享接口
// 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果
wx.onMenuShareAppMessage({
title: shareTitle, // 分享标题
desc: shareDesc, // 分享描述
link: shareUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: shareImgUrl, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返噿
// alert('用户点击发送给朋友');
},
success: function () {
// 用户确认分享后执行的回调函数
alert('分享成功');
},
cancel: function () {
// 用户取消分享后执行的回调函数
alert('已取消');
}
});
// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果
wx.onMenuShareTimeline({
title: shareTitle, // 分享标题
link: shareUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: shareImgUrl, // 分享图标
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返噿
// alert('用户点击分享到朋友圈');
},
success: function (res) {
alert('分享成功');
},
cancel: function (res) {
alert('已取消');
},
});
// alert('已注册获取“分享到朋友圈”状态事乿');
wx.error(function (res) {
alert(res);
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
});
1、微信 JS 接口签名校验工具
http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign