前言
微信公众号自定义分享功能,可附带图片、标题、内容
提示:以下是本篇文章正文内容,下面案例可供参考
一、微信公众号对网页域名进行授权,把MP_verify_*.txt文件放在项目的根目录下
二、编写后台获取凭证接口
@PostMapping("/signature")
public String shareInfo(@RequestParam("url") String url)
if (url.contains("localhost") || url.contains("192.168")) {
return error("本地环境不分享");
}
WxJsapiSignature sign = null;
Map<String, Object> map = new HashMap<>();
WechatUser user = userInfo();
map.put("desc", "分享链接上的内容")
// @Autowired
// private WxMpService wxMpService;
sign =wxMpService.createJsapiSignature(url);
map.put("sign", sign);
//获取分享信息
map.put("title", "标题");
map.put("url", url);
map.put("imgUrl", "分享链接上的图片");
return success("获取成功", map)
}
三、网页JS编写
$(function () {
var url = decodeURIComponent(location.href.split('#')[0]);//当前页面的地址
data.ajaxPost("上面编辑的接口", "url="+url, function (res) {
if (res.code == 200) {
var sign=res.body.sign;
var share=res.body;
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: sign.appId, // 必填,公众号的唯一标识
timestamp: sign.timestamp, // 必填,生成签名的时间戳
nonceStr: sign.nonceStr, // 必填,生成签名的随机串
signature: sign.signature,// 必填,签名
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo'
]
});
wx.ready(function () {
var shareurl = share.url;
var title = share.title;
var desc = share.desc;
var imgUrl = share.imgUrl;
// 2. 分享接口
// 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareAppMessage({
title: title,
desc: desc,
link: shareurl,
imgUrl: imgUrl,
success: function () {
view.shareCount(0);
}
});
// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareTimeline({
title: title,
link: shareurl,
imgUrl: imgUrl,
success: function (res) {
view.shareCount(1);
},
fail: function (res) {
}
});
// 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareQQ({
title: title,
desc: desc,
link: shareurl,
imgUrl: imgUrl,
success: function (res) {
view.shareCount(2);
},
});
wx.error(function (res) {
//alert(JSON.stringify(res));
});
});
}
})
})
//异步请求
var data = {
ajaxPost: function (url, data, callback) {
$.ajaxSetup({
async: true
});
jQuery.ajax({
url: url,
data: data,
type: "POST",
dataType: "JSON",
beforeSend: function () {
},
success: function (res) {
if (arguments.length == 3) {
callback(res);
} else {
layer.msg(res.message);
}
}
, error: function () {
layer.msg("请求失败");
},
complete: function () {
}
});
},
四、页面引入j
引入jquery的js
<script src="/js/jquery-1.12.4.min.js"></script>
引入微信的js
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>\
引入刚刚编写的js
<script src="/js/share.js"></script>