如何在没有 API 密钥的情况下模拟 Firebase 身份验证

How to emulate Firebase authentication without an API key

我正在使用 Firebase 的 JS SDK 构建一个开源项目。我的目标是允许贡献者使用 Firebase 模拟器在本地 运行 项目,这样他们就不需要任何真实的凭据。 Firebase emulator docs 指定“您可以 运行 模拟器而无需创建 Firebase 项目”。这正是我想要的!

在运行宁firebase init之后,我写了下面的代码。它会触发一个弹出窗口,允许用户通过 GitHub:

登录
import { initializeApp } from "firebase/app";
import { connectAuthEmulator, getAuth, GithubAuthProvider } from "firebase/auth";

const app = initializeApp({
  projectId: "demo-project",
});

const auth = getAuth(app);
connectAuthEmulator(auth, "http://localhost:9099");

// When users sign in, we call the following method:
async function signIn() {
  const githubAuth = new GithubAuthProvider();
  await signInWithPopup(firebaseClientAuth, githubAuth);
}

上面的代码会触发以下错误:

Uncaught (in promise) FirebaseError: Firebase: Error (auth/invalid-api-key)

在现实世界中,我会用 apiKey 调用 initializeApp(),但在这里我只想模拟身份验证。我也尝试过完全不调用 initializeApp() 并在没有任何参数的情况下调用 getAuth(),但它会触发相同的错误。

据推测,API 密钥需要创建一个项目,所以实际上可以 运行 Firebase 身份验证模拟器而不创建 Firebase 项目吗?

is it actually possible to run the Firebase auth emulator without creating a Firebase project?

不,您需要将模拟器连接到项目。您会注意到,在 setup instructions 中,您需要 运行 firebase init 来选择您的项目以及您要在该项目中使用的产品。