我是 vue 网页项目,项目部署 windows 服务器,有用 nginx
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect' 后,
第一次重定向报红,并且很快进行了第二次重定向,相比第一次重定向增加了 uni, key, pass_ticket 三个参数
估计是由于第一次重定向虽然拒绝,但是 code 是有的而且被使用了,导致第二次重定向后不能再有此 code
整个 network
第一次重定向:
第二次重定向:
如何解决?
解决了没啊,老哥
// 假设第一次失败,那么重定向回到你自己的网页之后,路径上肯定不会有code返回,那么就继续访问授权链接 // 判断只要路径中有code就不要再重定向了 let code = utils.getUriParam(window.location.href, "code"); if (!code) { location.href = `${api}?appid=${APPID}&redirect_uri=${redirect_url}&response_type=code&scope=snsapi_base#wechat_redirect` } else { // 走业务流程 }
var code1 = getUrlParam('code')
if (code1 == null || code1 === '') {
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(window.location.href) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
} else {
code.value = code1
}
这篇文章有说和我相同的问题,但是他是后端处理而且是 c# ,我确实没看明白,另外他提到的增加 &connect_redirect=1这个参数我也试过同样不行
前端直接访问后端的一个接口地址,后端在这个接口访问微信授权链接,redirect_uri填前端页面地址,然后你就拿到了code,而且这种方式也不会出现返回上一页时无限授权的情况了
第二个就是我用过 nginx ,我看网上说可能有影响,但是我也只是转发了端口,而且是调用借口时才进行转发,只进入页面并没有转发。
但还是不知道咋解决,已经麻了我一天了