300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众号分享链接自定义hash值的处理

微信公众号分享链接自定义hash值的处理

时间:2024-03-25 19:41:36

相关推荐

微信公众号分享链接自定义hash值的处理

微信公众号默认的分享样式是直接分享一条链接的,样式丑陋。但是微信jsdk暴露了分享的API可以自定义分享样式。

一、分享鉴权及分享接口冲定义

这一块的文档很全面,不做细述。关键代码如下:

function setConfig(appId) {axios.get(monApi + '/Recruitment/WXGetSign?url=' + encodeURIComponent(window.location.href.split('#')[0])).then(function (res) {var result = res.data.result;wx.config({debug: false,appId: appId,timestamp: result.timeStamp,nonceStr: result.nonceStr,signature: result.signature,jsApiList: ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'],});wxShareReady({title: '分享链接标题',desc: '欢迎您的访问',link: window.location.origin + window.location.pathname + '?initial=wechat&hash=' + Base64.encode(window.location.href.split('#')[1]),imgUrl: '/images/logo.jpg'})})}复制代码

关键点是传给后台的url鉴权链接要和当前url一致,通过encodeURIComponent传给后台拿到鉴权信息,wx.config里配置对应属性。

二、hash路由页面分享的实现

我这边解决的一个主要问题是,微信公众号分享后会把hash后面的字段丢弃掉,导致从详情页分享的页面,点击只能到跟路由页面。 要解决这个问题,第一种办法可以使用hastory模式;这个需要服务端配合设置,然后页面的链接就是不带hash的完整链接。 我这里使用第二种办法:在自定义分享的link字段时,将hash后的字段截取,Base64.encode一下赋值为hash变量放在url上分享出去,在页面进入的路由判断是否是分享进入的链接, 如果是则获取hash属性值Base64.decode一下使用框架的路由定向到对应的页面去,从而实现纯前端的方式分享完整页面链接。

三、不同页面重定义分享接口

最后补充一点,要想实现分享所有页面的完整路径,需要在页面的路由中重新调用wxShareReady传入当前页面的link,这样从不同页面分享的链接才会是对应的页面。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。