收藏
回答

获取微信 code 重定向两次 导致 invalid code 如何解决?

我是 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

第一次重定向:

第二次重定向:

如何解决?



最后一次编辑于  2022-09-23
回答关注问题邀请回答
收藏

2 个回答

  • 赤黑
    赤黑
    2023-03-29

    解决了没啊,老哥

    2023-03-29
    有用
    回复
  • Charlie
    Charlie
    2022-09-23
    // 假设第一次失败,那么重定向回到你自己的网页之后,路径上肯定不会有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 {
      // 走业务流程
    }
    
    2022-09-23
    有用
    回复 7
    • 何望,
      何望,
      2022-09-23
      我想重定向并没有再返回我自己的页面,我的 network 显示的信息是一直都在不会随跳转被清楚的。另外的我的代码和您这个应该意思是一致的
      2022-09-23
      回复
    • 何望,
      何望,
      2022-09-23
      https://www.cnblogs.com/szw/p/5875485.html
      这篇文章有说和我相同的问题,但是他是后端处理而且是 c# ,我确实没看明白,另外他提到的增加 &connect_redirect=1这个参数我也试过同样不行
      2022-09-23
      回复
    • Charlie
      Charlie
      2022-09-23回复何望,
      每次刷新都必现吗,按理说这个一般是不会失败的。
      2022-09-23
      回复
    • Charlie
      Charlie
      2022-09-23回复何望,
      确实可以让后端解决,流程是:
      前端直接访问后端的一个接口地址,后端在这个接口访问微信授权链接,redirect_uri填前端页面地址,然后你就拿到了code,而且这种方式也不会出现返回上一页时无限授权的情况了
      2022-09-23
      回复
    • 何望,
      何望,
      2022-09-23回复Charlie
      是的,每次都有,我现在怀疑两个原因,1是 redirect_url 是 http 开头的,我看微信的文档说 redirect 应当是用 https,但这是后端弄的我也没办法整。


      第二个就是我用过 nginx ,我看网上说可能有影响,但是我也只是转发了端口,而且是调用借口时才进行转发,只进入页面并没有转发。


      但还是不知道咋解决,已经麻了我一天了
      2022-09-23
      回复
    查看更多(2)
登录 后发表内容