如何在没有 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
来选择您的项目以及您要在该项目中使用的产品。
我正在使用 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
来选择您的项目以及您要在该项目中使用的产品。