微信公众号分享配置无效。。分享出来的只是纯链接了
挺久没接微信公众号的项目开发了,最近突然接了一个,结果微信自定义分享给我整懵了。原本配置的好好的,屡试不爽的代码,居然死活不生效,开启debug,开发者工具调试都显示没问题,结果在微信上分享出来就是没有配置生效,而且连以往的默认样式都没有,就是一个页面链接给分享出来了。最后还是兄弟公司的测试提了一嘴,说,现在微信的分享,必须要放到公众号里才生效,他们遇到过。。。纳尼?沃特发。。。于是迫不及待赶紧把公众号的菜单配置上去,从公众号自定义菜单进去,尝试分享,结果真的是,很顺利就分享成功了。。。哎,我一直以为是微信开放文档有啥更新,对着文档研究了半天也没发现个所以然,很委屈呀,你说你微信规则有变动,为啥也不提醒提醒,文档都翻烂了,也没发现在哪里有相关说明。特此一记吧,也给大伙提个醒。
上方是直接通过链接点击进入分享出来的结果
这里是通过公众号的自定义菜单入口进入的分享,可以成功自定义分享
讲到这里了,顺便说一下如何自定义微信分享吧。直接上代码:
// 微信分享
Vue.prototype.wxShare = function (myurl, shareSuccess, desc, title, imgUrl) {
let vm = this;
let urlname = window.location.href.split('#')[0];
/**
* 获取微信token信息
* @return {[type]} [description]
*/
function getToken(callback) {
axios.post('xxxxx获取签名算法啥的接口', {'url': urlname})
.then(json => {
if (json.data.code == 1) {
Wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: json.data.token.appId, // 必填,公众号的唯一标识
timestamp: json.data.token.timestamp, // 必填,生成签名的时间戳
nonceStr: json.data.token.nonceStr, // 必填,生成签名的随机串
signature: json.data.token.signature,// 必填,签名,见附录1
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'hideMenuItems'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
callback();
} else {
// alert('分享功能暂不能使用')
// MessageBox('提示', json.data.msg + '分享功能暂不能使用');
}
}, () => {
// alert('网络异常,获取微信参数失败')
// MessageBox('提示', '网络异常,获取微信参数失败');
});
}
// 分享内容、标题、链接等配置
let shareConfig = {
title: title||'默认名字',
desc: desc||'默认描述',
link: myurl||'默认链接',
imgUrl: imgUrl||'默认图片地址',
success: function () {
if (shareSuccess) {
shareSuccess();
}
},
cancel: function () {
alert('分享已取消');
}
};
// 初始化分享函数调用
function initShare() {
Wx.ready(function () {
// 分享到朋友圈
Wx.onMenuShareTimeline(shareConfig);
// 分享给朋友
Wx.onMenuShareAppMessage(shareConfig);
// 分享到QQ
Wx.onMenuShareQQ(shareConfig);
// 分享到腾讯微博
Wx.onMenuShareWeibo(shareConfig);
// 分享到QQ空间
Wx.onMenuShareQZone(shareConfig);
});
}
getToken(initShare);
};
使用的时候只需在页面调用,然后传入对应的参数即可
var myurl = '你要分享出去的页面地址,可以携带一些特定业务参数';
var desc = "分享的一些描述"
var shareSuccess = true
var title = "分享的标题"
var imgUrl = "图片地址,如果是商品详情很有可能是商品的主图之类的"
this.wxShare(myurl,shareSuccess,desc,title,imgUrl);
值得一提的是,微信开放文档的说明
按说明1.4.0之后的分享要用最新的,但是实际上操作下来的话,它确实只是说即将废弃,但是如果你只写最新的接口,还是可能无法正常分享的,所以,如果你是1.4.0之后的版本,那就把老的和新的都写上。如果是1.4.0之前的,就只写老的接口就好了。
版本的话就在package.json里看。方法不是一成不变,时刻关注官方文档,以官方文档为主。