微信jssdk分享接口,wx.updateAppMessageShareData,wx.updateTimelineShareData,在vue单页应用使用中遇到的问题,记录一下
微信JS-SDK文档:原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即将废弃。请尽快迁移使用客户端6.7.2及JSSDK 1.4.0以上版本支持的 wx.updateAppMessageShareData、updateTimelineShareData 接口
我们的项目,用户在更新了微信客户端之后,分享出现了点问题,决定修改,根据客户端版本执行不同的接口。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
wx.updateAppMessageShareData({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
}, function(res) {
//这里是回调函数
});
});
jsApiList 中加入两个新接口,然后配置wx.updateAppMessageShareData,大部分页面都生效了,有一个页面有点特殊需求,根据用户的状态不同分享出去的链接不一样,于是在这个页面配置了两次,但是第二次怎么也不生效,原来的wx.onMenuShareAppMessage是能够正常工作的,但是wx.updateAppMessageShareData不行,于是开始找问题出在哪???
我的判断是同一个页面路由下配置了两次,于是把一个页面拆成了两个页面,单独配置微信分享,结果还是拆出来的第二个页面不生效,萌得一比。。。
我认真的对比了两个页面分享代码,发现了一个不算大的区别,就是link参数,分享的链接,不生效的这个页面的link参数特别长,别的都很短,例如 http://www.baidu.com?id=666, 而我的那个长的链接例如 http://www.baidu.com?id=666&name=jone&age=18&content=后端接口返回的100个以上汉字或者字母组成的字符串经过encodeURIComponent转码&redirect_uil=*******************; 我改成短链接测试分享居然成功了,又tm萌的一比。 本来带这么多参数是为后端省了一个接口,分享页面需要显示的数据都自带了,让后端的同事加了一个接口,问题解决了。终于解决了。。
因为做了两个地方的改动,一个页面拆成两个页面只设置一次分享,缩短link参数,可以确定的是link参数一定是有影响的,那之前的改动有没有用还不确定,于是我把两个页面改回一个页面,再做测试,失败。确定了两个地方都是有影响的,但是link参数导致分享失败,真的是因为过长,还是别的原因还没有具体测试