我已经在本地部署了一个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.隐姓埋名模式:问题仍然存在,我第一次登录时它仍然有效,但第二次它将我重定向到一个空白页面,请求甚至没有到达我的服务器。
这可能是什么问题呢?
1条答案
按热度按时间zf9nrax11#
问题是Creat-Reaction-app模板附带的服务工作者,但是我不想完全禁用它,因为我希望我的应用程序是一个PWA,所以第二件最好的事情是专门为用户启动Google登录的页面(Google按钮所在的页面)禁用服务工作者缓存。
为此,我必须安装
sw-precache
包,它允许您修改创建-React-应用程序模板附带的默认服务工作者(因为您不能直接修改它)。然后,您必须在项目的根目录下创建一个配置文件,并添加以下行,在本例中,我将其称为
sw-precache-config.js
:然后在包json的构建脚本中: