对Google OAuth终结点的请求重定向到Firefox中的空白页面

u0njafvf  于 2022-10-08  发布在  Go
关注(0)|答案(1)|浏览(156)

我已经在本地部署了一个Reaction(CRA)+Node JS应用程序(使用创建-React-应用程序构建脚本),我已经使用passportjs和cookieSession实现了Google OAuth登录以实现持久性。

登录运行良好,但当我注销然后尝试使用Google OAuth登录再次时,出现了一个奇怪的错误,它只是将我重定向到一个空白页面。

下面是我向我的Google OAuth端点发出请求的方式:

window.open('https://localhost:3000/auth/google', "_self")

然后,该终结点由我的API获取:

app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

在做一些故障排除时,起初似乎罪魁祸首是Cookie,因为当我在尝试再次登录之前删除站点数据时……那么登录就可以正常工作了。

然而,如果我只删除Cookie(通过存储面板->Cookie->Delete All,在Firefox中),错误仍然存在,只有当我完全删除站点数据时,它才会消失。

此外,当我第二次尝试登录时,请求不会到达我的服务器。

我已经试过了:

1.将我的登录按钮 Package 在锚标签中,并将锚的标签href设置为端点url。
1.创建锚标签并使用端点URL分配HREF,然后以编程方式点击该新元素。
所有这些都没有奏效,这个问题仍然存在。
1.Fresh Firefox个人资料:这甚至很奇怪,当我第一次尝试在新创建的个人资料中登录谷歌时,这个错误就出现了。同样,我必须首先单击clear cookies and site data按钮才能使其工作。
1.隐姓埋名模式:问题仍然存在,我第一次登录时它仍然有效,但第二次它将我重定向到一个空白页面,请求甚至没有到达我的服务器。

这可能是什么问题呢?

zf9nrax1

zf9nrax11#

问题是Creat-Reaction-app模板附带的服务工作者,但是我不想完全禁用它,因为我希望我的应用程序是一个PWA,所以第二件最好的事情是专门为用户启动Google登录的页面(Google按钮所在的页面)禁用服务工作者缓存。

为此,我必须安装sw-precache包,它允许您修改创建-React-应用程序模板附带的默认服务工作者(因为您不能直接修改它)。

然后,您必须在项目的根目录下创建一个配置文件,并添加以下行,在本例中,我将其称为sw-precache-config.js

module.exports = {
  runtimeCaching: [
    {
      urlPattern: /<the route to ignore>/,
      handler: 'networkOnly'
    }
  ]
};

然后在包json的构建脚本中:

"build": "react-scripts build && sw-precache --config=sw-precache-config.js"

相关问题