一.分享链接 link的域名必须与当前页面的域名相同
分享页面的域名要与 分享出去地址(link)的域名相同,否则自定义的title、link、imgUrl会设置失败并且没有任何错误提示。
二. iphone 第一次进入invalid signatrue
背景:微信公众号网页,nuxt.js框架
问题:iphone手机第一次进入页面提示: config:invalid signature,也就是说签名无效,刷新当前页面后签名就通过了(config: ok)。而Android手机却一直是正常的(config: ok)。
微信分享流程:
第一步:设置公众号的JS接口安全域名
第二步:引入js文件
第三步:获取签名:传入当前页面url(当前网页的URL,不包含#及其后面部分) 作为参数,请求后端接口获取签名。
第四步:所有需要使用JS-SDK的页面必须先注入配置信息,用第三步获取的签名信息(AppId、生成签名的时间戳、生成签名的随机串、签名)传入wx.config,完成配置,并开启调试模式:debug: true
这时用Android手机打开会提示:config: ok,一切正常。
问题来了:
这时候用iphone手机打开却提示: config:invalid signature。刷新页面后就会提示:config: ok,又好了?什么鬼?
在第三步把“当前页面url” 打印出来的是:http://xxx.com/share/
而进入这个页面的地址是:
<nuxt-link to="share">分享</nuxt-link>
点击后实际浏览器中是:
http://xxx.com/share 地址最后面最后少了个 “/”
因为两个地址不一致,刷新页面后浏览器的实际地址是:http://xxx.com/share/ (刷新页面后 url最后多了一个“/”),这时候两个地址完全一致,所以刷新页面后签名config: ok。
解决办法:
最简单粗暴的解决办法就是进入页面的时候就给最后加上 “ / ”:
let pathName = nuxtConfig.router.base // base的值是相对目录路径
window.location.href= location.origin +pathName+ 'share/' // 注意:最后的“/”是重点