js-sdk微信分享功能的实现(vue)
代码
mounted(){ //在mounted里执行 let ua = navigator.userAgent.toLowerCase(); //判断是否是微信端 if (ua.match(/MicroMessenger/i) == "micromessenger") { this.getWxShare() } } methods:{ getWxShare(){ let url = window.location.href.split('#')[0] axios.get(`${common.coper}/getWxShareParam?url=${url}`).then(res=>{ if(res.data.code==200){ let wxInfo=res.data.data // let videoInfo=this.videoDetails //①将动态数据赋值给变量供微信内置函数使用,因videoDetails是其他接口异步请求来的,所以请保证在其他接口执行完毕videoDetails赋了值之后,再执行此行代码,否则videoDetails没有值即为undefined,会导致微信分享功能失效(重点:注意异步请求) wx.config({ debug: false, // 是否开启调试模式 appId: wxInfo.appid, //appid timestamp: wxInfo.timestamp, // 时间戳 nonceStr: wxInfo.nonceStr, // 随机字符串 signature: wxInfo.signature, // 签名 jsApiList: [ 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage', ] // 需要使用的JS接口列表 }) wx.ready(()=>{ //这里本来是wx.ready(function(){,为了更方便使用数据,我改成了箭头函数。若是坚持用普通函数,请在上方①处进行赋值(请看注意事项),在下方直接这样使用 title:videoInfo.title即可 wx.onMenuShareAppMessage({ title: this.videoDetails.title?this.videoDetails.title:'', // 分享标题 desc: this.videoDetails.name?`电影主演:${this.videoDetails.name}`:'', // 分享描述 link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: this.videoDetails.image?this.videoDetails.image:'', // 分享图标 success: function () { console.log("成功") }, cancel:function(){ console.log("取消") } }) }) wx.error(function(res){ console.log(res.errMsg) }) } }).catch() }, }
坑:
1、若报错63002(意思是无效的签名),很大因素可能就是域名不符合的问题,要与后端沟通好。
2、目前新的api,updateAppMessageShareData我用起来有一些问题。暂时用旧的api,onMenuShareAppMessage等以后旧的彻底废弃后再使用新api并看看bug是否解决
相关推荐
戴翔的技术 2020-05-18
齐天大圣数据候 2020-05-16
过时不侯的温暖 2020-05-08
浪味仙 2020-04-20
戴翔的技术 2020-03-04
zengfanpei 2020-02-20
cbao 2020-02-14
xiaonao00 2019-12-25
cbao 2019-12-12
浪味仙 2019-12-10
maodouhuasheng 2019-12-04
且听真言 2019-12-01
ywwazyj 2019-11-15
badroot 2019-11-18
badroot 2019-11-17
zhichijunjun 2019-11-13
wjeymiantan 2019-11-07