本地Vue/Vite环境中Firebase GoogleAuthProvider强制使用HTTPS导致登录失败的问题求助
本地Vue/Vite环境中Firebase GoogleAuthProvider强制使用HTTPS导致登录失败的问题求助
我已经翻了一大堆技术文章和Stack Overflow的回答,但都没解决我的问题——大部分甚至和我的具体场景不沾边,现在有点卡壳了。先说说我的问题和现象,再讲我试过的各种方法,最后贴代码。
问题描述
我正在用Vue/Vite做本地开发,已经安装了Firebase工具包(包括模拟器),现在要集成Google登录功能。但不管是用signInWithRedirect还是signInWithPopup,这两个方法都硬要走HTTPS链接,我怎么都没法说服它们改用HTTP。
具体报错情况:
- 用重定向方式时,会尝试跳转到
https://localhost:5173/,结果提示无法建立安全连接 - 用弹窗方式时,会把弹窗iframe的URI设为
https://localhost:5173,同样连不上
主机和端口都是我本地项目正在运行的地址,完全匹配。
我试过的方法
我试了不少办法,可能有些忘了,但主要的几个都列在这里:
- 确认我的Google OAuth项目已经把
http://localhost:5173同时添加为授权来源和重定向URI的白名单 - 检查过Firebase确实已经关联到这个Google OAuth项目
- 在
.env.local里配置了VITE_FIREBASE_AUTH_DOMAIN来覆盖默认值,而且这个配置确实生效了(不过要吐槽一句,如果我在这个值里加协议的话,会被自动去掉冒号,变成https://http//localhost:5173/这种奇怪的格式) - 试过按照某篇Firebase文档的说法,把Auth模拟器的URL作为字符串传给
signInWith<X>()函数,但直接报了Firebase Auth参数错误,查官方API文档发现这个用法根本不被支持(或者说完全没在文档里提到) - 清浏览器缓存也没用(其实我本来也觉得这解决不了,但看到Stack上有人建议就试了)
代码
我两种方式都试过,下面是当前在用的弹窗方式代码(重定向的代码注释掉了):
const auth = getAuth(app); const provider = new GoogleAuthProvider(); console.log(import.meta.env.VITE_FIREBASE_AUTH_DOMAIN) // 之前试过的重定向方式 // signInWithRedirect(auth, provider) // .then((result) => { // console.log(result) // }).catch((err) => { // console.log(err.message) // }); // 当前测试的弹窗方式 signInWithPopup(auth, provider) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; const user = result.user; console.log(JSON.stringify(user)); }).catch((error) => { console.error(error.message); })
有没有办法让GoogleAuthProvider识别出我是在本地开发环境,允许使用HTTP而不是强制要求HTTPS?
内容来源于stack exchange
相关产品推荐
相关产品推荐

