解决微信授权成功后点击按返回键出现空白页和报错的问题
(编辑:jimmy 日期: 2024/11/26 浏览:3 次 )
微信授权 的操作可以阅读我的另一篇文章 https://www.jb51.net/article/188237.htm
微信授权我是 在index.vue做的授权,是一个空白页,因为授权需要回调所以这个页面会刷新两次,当我们授权成功进入主页面后,点击返回键或者点击手机的物理返回键,因为浏览器history机制,按物理返回或者返回肯定是会进入这个授权页面的,而此时code已经使用过,会报code错误,而且这个是空白页,多次点击也并不能回到微信的消息列表页,体验极差。。。
我的做法是引入微信的js sdk,使用vue-router 路由导航beforeEach 中的 to(即将到达的页面)和from(当前页面)来做判断,假如to是授权页,from是授权成功后首次进入的页面,在from页面点击返回 ,路由监听到这一满足条件就 调用 微信 wx.closeWindow() 方法即可关闭当前页面回到消息列表页,不是使用vue来开发的项目原理大概也是类似的。
具体代码如下:
①引入微信sdk,npm install 相对应的包即可。
②在路由配置页面配置路由守卫。
router.beforeEach((to, from, next) => { // 特殊处理授权成功后的user个人中心页面点击返回退出到微信消息列表页 let mark = to.fullPath.indexOf('code') if (mark !== -1 && from.fullPath === '/user') { wx.closeWindow() } })
因为微信授权页授权成功必会在url中带 code,所有我是通过判断路径中是否有 code认定是授权页(可能这种方式)不妥,但能确认to和from两个条件满足即可。
下一篇:微信h5静默和非静默授权获取用户openId的方法和步骤