我正在使用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:错误(auth/invalid-api-key)
在真实的世界中,我会用apiKey
调用initializeApp()
,但这里我只想模拟身份验证。我还尝试过根本不调用initializeApp()
,而不带任何参数地调用getAuth()
,但它会触发相同的错误。
据推测,API密钥需要创建一个项目,那么实际上可以在不创建Firebase项目的情况下运行Firebase auth模拟器吗?
3条答案
按热度按时间kt06eoxx1#
是的。
演示Firebase项目没有真实的的Firebase配置,也没有实时资源。这些项目通常通过代码实验室或其他教程访问。
演示项目的项目ID有**demo-**前缀。
Firebase文档
运行
firebase emulators:start --project demo-[ANYTHING_YOU_WANT]
例如
firebase emulators:start --project demo-test-project
thtygnil2#
是否可以在不创建Firebase项目的情况下运行Firebase auth模拟器?
不,您需要将模拟器连接到项目。您会注意到,在安装说明中,您需要运行
firebase init
来选择您的项目和您想要在该项目中使用的产品。8ftvxx2r3#
让我们来看看这个游戏,但我发现我可以在使用模拟器时避免
auth/invalid-api-key
错误,只需在测试中将apiKey: "any-string-value"
传递给initializeApp
:这似乎在此(打开,但不活动)问题中被跟踪:
https://github.com/firebase/firebase-js-sdk/issues/6776
apiKey的检查是在客户端完成的,它是在创建auth模拟器之前附加的,所以可能不需要。 www.example.com
希望这对某人有帮助(从Firebase文档中得到看似简单的答案非常棘手)。