18910140161

绕过微信授权的返回操作 实现关闭应用

顺晟科技

2021-06-16 10:40:51

360

事件

在微信中打开需要授权的web应用时,通常要跳转到微信授权地址:

https://open.weixin.qq.com/connect/oauth2/authorize?

appid=xxxx

重定向_uri=www.myapp.com

response _ type=代码

scope=snsapi_base

状态=xxxx

#微信_重定向

授权成功后,会自动用authCode返回redirect_uri参数指定的地址,然后在开发者后端的登录界面用authCode登录,最后手动跳转到目标页面(这个具体的页面可以在授权前记录,然后拿出来跳转),一切都很自然。

问题

但是会有这样一种需求:如果用户按下手机的物理按键或者滑动全屏返回,最终会到达处理授权登录的页面,从而再次触发登录,再次跳回,无法退出应用。

计划

在成功检索后端登录界面之后,跳转到目标页面之前,通过window.history.replaceState()方法手动添加历史,例如:

window . history . replace state(null,null,window . location . protocol '/' window . location . host '/#/微信_ exit ');

这样不会直接跳转到/微信_exit,但是下次用户返回时会通过!同时注意,我们用replaceState()代替了pushState(),因为replaceState()清除了之前的历史,使得用户无法手动返回授权登录页面。

然后全局观察捕捉这个历史,到达/微信_exit时,主动调用微信界面closeWindow()关闭申请表。以vue为例,添加路由拦截进行全局观察:

router.beforeEach((to,from,next)={

if(to . path==='/微信_exit') {

common .get微信atSDK(wx={

wx . closewindow();

});

}

}

common .get微信atSDK()是封装微信js sdk接口的方法。采集成功后,调用closeWindow()接口。更多js接口,请参考https://work.weixin.qq.com/api/doc#90001/90144/90540

  • TAG:
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航