说说ios端微信H5用户拒绝授权,H5自动退出的思路

8,532 阅读2分钟

这个问题也困扰了我好久,苦于查找大量文章没看到什么方案,部分说自动退出的,但当时的代码怎么写都没法自动退出。后来苦苦挣扎也就解决了,说下实现前和实现后的代码吧。

实现前

用户访问x页面,你可能在根页面里调了个接口,然后根据接口返回的不同去对应处理。

getOpenid().then(res => {  
    // 表明已授权,正常处理你的前端逻辑
    if(res.code === 200){ 
        //比如调微信的sdk
    }else if(res.code == 201) {
        //未授权,前端重定向到授权页
        location.replace(res.data.authUrl);
    }
})
前端跳授权页的这种实现,目前测试是实现不了用户拒绝授权个人信息就自动退出页面的

实现后

路由采用的history模式,用户访问H5的链接直接让后端处理,也就是绕过前端,直接被后端当成接口处理去授权,如果用户同意授权了就重定向到你前端该显示的页面,拒绝就自动退出了(点拒绝微信那边也没给回调,确实坑)

具体方案我这边以改路由为主,比如客户访问/client/a页面,这时你需要将这页面发起访问的请求被后端拦截当成接口处理,让后端去处理授权对应逻辑。比如我这边的接口都是以/api为base,故要将用户访问的路由修改成/api/client/a,后端判断有没授权,有授权则重定向到/client/a,没有则跳授权页

 routes: [       
   {      // 后端重定向的真实页    
      path: '/client/a',          
      name: 'a',     
      component: A  
   }
]

当然这种方案在ios端可行,在安卓端点拒绝是停留在空白页,无自动退出。但大家都这么做,所以就这样ok了~