技术饭
微信分享:分享签名、分享链接需要注意的细节
微信分享JSSDK在1.4.0之后,废弃了很多的方法如:onMenuShareTimeline、onMenuShareAppMessage、onMenuShareQQ等,取而代之的是:自定义“分享给朋友”及“分享到QQ”按钮的分享内容(updateAppMessageShareData)、自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容(updateTimelineShareData)。
具体请参考:分享接口
签名部分问题URL可以参考:https://www.copylian.com/technology/191.html
本文主要是处理微信分享url地址的问题:
<script src="js/jquery.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
//网页分享:当前网址(浏览器访问的完整url),由于微信给出的签名url地址必须是当前网址,所以需要把当前的网址传给后端做加密签名
var url = 'https://www.copylian.com/weixinabc.php/test/testonline.html';
//发送ajax
$.post('https://www.copylian.com/weixinabc.php/thirdplatform/getSign', {brand_id:10,url:url}, function(data){
WechatData = {
//初始配置
debug: true,
appId: data.data.appId,
timestamp: data.data.timestamp,
nonceStr: data.data.nonceStr,
signature: data.data.signature,
hideOptionMenu:false,
//分享配置
title: '跨域ajax异步测试微信分享功能 - By CopyLian\'s Blog',
// 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致,这个很重要,这里只验证域名与签名的url没关系
// link: data.data.url,
link: "https://www.copylian.com?invite_code=12345", // 只要域名已经配置在js安全域名即可,参数可以随意配置
// link: "https://www.copylian.com?invite_code=12345",
img: 'https://www.copylian.com/Public/Uploads/bloginfo/images/20161223/thumb/thumb_20161223155611_585cd89b20cc5.jpg',
desc: '跨域ajax异步测试微信分享功能,这个功能研究了有一段时间了。',
};
//微信初始化
wechatInit(WechatData);
});
});
/**
* [wechatInit 微信分享初始化]
* @return {[type]} [description]
*/
function wechatInit(WechatData){
wx.config({
debug: WechatData.debug,
appId: WechatData.appId,
timestamp: WechatData.timestamp,
nonceStr: WechatData.nonceStr,
signature: WechatData.signature,
jsApiList: [
// 'onMenuShareTimeline', // 废弃
// 'onMenuShareAppMessage', // 废弃
// 'onMenuShareQQ', // 废弃
// 'onMenuShareWeibo', // 废弃
// 'hideOptionMenu',
// 'showOptionMenu',
// 'scanQRCode',
'updateAppMessageShareData',
'updateTimelineShareData',
'getSetting'
]
});
wx.ready(function(){
//分享到朋友圈
wx.updateTimelineShareData({
title: WechatData.title, // 分享标题
link: WechatData.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安域名一致
imgUrl: WechatData.img, // 分享图标
success: function () {
// 用户点击了分享后执行的回调函数
console.log("分享到朋友圈成功");
},
cancel: function () {
// 用户取消分享后执行的回调函数
console.log("分享被取消,请重新分享");
}
});
//分享给朋友
wx.updateAppMessageShareData({
title: WechatData.title, // 分享标题
desc: WechatData.desc, // 分享描述
link: WechatData.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安 全域名一致
imgUrl: WechatData.img, // 分享图标
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户点击了分享后执行的回调函数
console.log("分享给朋友成功");
},
cancel: function () {
// 用户取消分享后执行的回调函数
console.log("分享被取消,请重新分享");
}
});
});
}
</script>
总结:
1、拿去签名的url必须是当前完整的访问地址,也就是签名的url与访问网址一致
2、分享的出去的url必须已经配置在公众号开发域名中,并不需要与签名url保持一致,任意参数都可,三方平台代发起的那就去三方平台的开发资料里配置,单独公众号那就在公众号里面设置
文明上网理性发言!