You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:33:06