微信静默授权返回问题

微信中需要获取openid,为了安全起见,采用服务器端静默授权方式,最终过程是:

前端页面(获取openid) -> 指定服务器端地址 -> 服务器端跳转到微信授权页 -> 微信授权页跳回服务器端 -> 服务器端跳回前端页面

在这里会存在一个问题,即微信授权返回死循环问题,因为这边前端跳转全部都是使用replace跳转,所以不会在history上再增加1一个页面,后来以为是我们服务器的问题,然后撇开微信直接让服务器端返回一个假的openid发现是可以返回的,所以问题出在微信的授权问题上,即:无论前端跳转是否采用replace,使用微信授权,微信自动会在浏览器增加一条页面,即跳转微信授权前的一个页面,这样的话,当用户点击返回按钮的时候,自然是返回到没有授权页,然后没有授权页根据业务逻辑再继续发起授权请求,就这样陷入了无线循环之中。

也思考过一些解决方式,比如使用iframe来获取openid,比如使用XMLHttpRequest来代替服务器端跳转,这些全部都行不通,所以只能在请求授权页做手脚,即判断 是否应该去获取授权页,如果是因为返回进入该页面的 则执行history.back(),否则则进入微信授权模式,但是这种方式还是存在一个问题,即如果请求授权页本身就是首页怎么办,执行history.back()也不会让微信浏览器自动关闭,这个时候就会卡在这里,当然是可以使用微信JSSDK的closeWindow()方法,但是这种方式需要等待wx.config()完成,这里涉及到从服务器端获取签名等流程,具有明显的延时情况,造成一种很糟

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值