本文详解微信JS-SDK分享接口的调用流程。首先需在公众号后台配置JS接口安全域名并上传校验文件;其次后端需依据微信签名算法生成签名参数;最后前端引入jweixin-1.4.0.js,通过wx.config配置并调用分享接口。文章提供了前后端核心代码示例,涵盖域名校验、签名获取及接口调用的完整步骤。
微信JS-SDK分享接口调用流程概述
本文示例分享了js微信分享接口的具体调用代码,供参考,详情如下
查阅微信api官方文档,仔细阅读即可解决相关问题
近期使用并整理分享,效果如图所示

配置JS接口安全域名
1.配置js接口安全域名
需使用微信jssdk,先在公众号后台配置:公众号设置→功能设置→JS接口安全域名。打开页面后需下载指定文件并上传至该域名根目录

该文件内容为校验字符串,上传后方可保存成功,从而启用jssdk
前端页面签名获取与接口调用
2.页面需从后台获取签名
页面核心代码引用jweixin-1.4.0.js,最新版声称将四个接口合并为两个,但未生效,故沿用原有四个接口
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
var currurl = decodeURIComponent(location.href.split('#')[0]);
var res = ${(jsApi)!};
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.appId, // 必填,公众号的唯一标识
timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature,// 必填,签名
jsApiList: ["checkJsApi","updateAppMessageShareData","updateTimelineShareData", "onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"] // 必填,需要使用的JS接口列表
});
wx.ready(function () {
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.checkJsApi({
jsApiList : ["checkJsApi", "updateAppMessageShareData","updateTimelineShareData","onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success : function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
// alert(res.checkResult);
// alert(res.errMsg);
}
});
//自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
wx.updateAppMessageShareData({
title:"饿了么红包", // 分享标题
desc: "饿了么红包描述", // 分享描述
link: currurl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: ${(pic)!}, // 分享图标
success: function () {
// 设置成功
}
})
//自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
wx.updateTimelineShareData({
title:"饿了么红包", // 分享标题
link: currurl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: ${(pic)!},
success: function () {
// 设置成功
}
});
//朋友圈
wx.onMenuShareTimeline({
title:"饿了么红包", // 分享标题
link: currurl, // 分享链接
imgUrl: "图片地址",
success: function (res) {
},
cancel: function (res) {
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
//朋友
wx.onMenuShareAppMessage({
title:"饿了么红包", // 分享标题
desc: "饿了么红包描述", // 分享描述
link: currurl, // 分享链接
imgUrl: "图片地址",
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//QQ
wx.onMenuShareQQ({
title:"饿了么红包", // 分享标题
desc: "饿了么红包描述", // 分享描述
link: currurl, // 分享链接
imgUrl: "图片地址", // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//QQ空间
wx.onMenuShareQZone({
title:"饿了么红包", // 分享标题
desc: ${(describe)!}, // 分享描述
link: currurl, // 分享链接
imgUrl: "图片地址", // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
});
wx.error(function (res) {
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
console.log("初始化wx.config失败" + res)
});
</script>
后端签名生成与算法注意事项
3.后端获取签名,务必注意签名算法,否则会导致签名失败,具体计算方式参考微信附录1-JS-SDK使用权限签名算法
@GetMapping(value = "/test")
public String test(@RequestParam(value = "id")Long id,Model model,HttpServletRequest request ) throws WxErrorException{
String url = request.getRequestURL().toString()+"?id="+id;
WxJsapiSignature sign = wxMpService.createJsapiSignature(url);
model.addAttribute("jsApi",JsonUtils.toJson(sign));
return "对应的页面";
}
最后总结思路:1.下载校验文件,2.后台获取签名(注意算法),3.页面引入js调用接口
完成!
以上为本文全部内容,希望对学习有所帮助,欢迎支持本站