解决了,这个bug存在几年了,都成特性了改不了了是吧。服了 原因是:IOS设备会把首次进入的A页面的地址当做 realAuthUrl,而安卓会把当前页面的地址当做realAuthUrl,所以wx.config的url和实际页面的url是有可能不一致的。 解决方案:在入口文件中,记录用户首次访问地址 (即A页面),然后当用户在B页面调用wx.config代码时,进行判断 —— 如果是IOS设备,取A页面的地址传给后端,让后端根据A页面的路径去生成签名。 如果是安卓设备,则取当前B页面的地址给后端, 让后端根据B页面的路径去生成签名即可。 (在vue中,我是在 App.vue 的onMounted里面记录首次访问地址的,记录在localStorage中,效果很好,问题解决了)
IOS手机wx.config方法,realAuthUrl和location.href 不一致Bug?功能流程: 1、用户进入A 页面,然后使用vue-router4中的push方法,从 A 页面 跳转到 B 页面 ,并引导用户进行分享; 2、然后用户在 B 页面 点击分享按钮,调用js-sdk中的 wx.config 方法,此时 location.href.split('#')[0] 读取到的是正确的B页面, 但wx.config读取到的realAuthUrl却是路由跳转前的 A 页面 ???? Bug如图: (此时其实已经是在B页面了,而且代码执行都是在B页面执行的,但wx.config方法一直读取到的是A页面的路径!!!) [图片] 此时,使用 location.href.split('#')[0] 读取到的页面是正确的, 但 wx.config 读取到的却是错误的,且无法手动上传url,导致bug无法被解决! 这一情况仅仅只会出现在 iPhone手机中,而且是概率出现,大概失败几十次之后偶尔可以成功一次。 安卓手机一切正常,可以正常获取签名完成后续的自定义分享功能。(所有设备的微信版本均为 8.0.54) 安卓手机一直可以成功运行,证明我们的签名算法正确,代码逻辑无误,是wx.config 函数本身的bug,请尽快修复! --------------------------------------------------------------------------------------------------------------------- 经测试:ios手机不经过A页面,直接在B页面调用 wx.config方法时,wx.config方法和 location.href的路径一致,可以完成后续自定义分享功能,请尽快排查bug原因。
12-05