繁体   English   中英

如何连接到 Firebase Auth 模拟器

[英]How to connect to Firebase Auth emulator

我有一个 Node.js API,它在后台使用 Firebase 身份验证和 firebase-admin SDK。

  • 客户端通过电子邮件和密码进行 GraphQL 突变
  • API 使用 Firebase Auth 对用户进行身份验证,在数据库中获取用户信息并将身份验证令牌和用户信息发送回客户端。

到目前为止,为了开发,我一直在云中使用 Firebase 项目,但我想切换到 Auth 模拟器。

我通过 firebase-tools CLI 添加了 auth 模拟器: firebase init emulators并在出现提示时选择 Authentication。

然后我启动模拟器firebase emulators:start和我的 API 服务器,指定这个环境变量: FIREBASE_AUTH_EMULATOR_HOST=localhost:9099按照本指南中的建议。

根据指南,指定FIREBASE_AUTH_EMULATOR_HOST=localhost:9099应该足以让firebase-admin知道它应该连接到模拟器。 但是,当我尝试进行身份验证时,API 仍在使用云中的项目。

有人遇到过类似的事情吗? 我错过了一步吗?

我不确定为什么它对你不起作用,看起来你做的一切都很好。 我无法从您发布的信息中推断出您做错了什么,您可能已经做了一些事情,例如使用覆盖本地请求的远程信息初始化 firebase 应用程序。 这是一些对我有用的代码,你应该尝试这个解决方案并从这个工作演示中得出你做错了什么。

火力地堡模拟器

我按照官方文章firebase init -> firebase init emulators中的建议初始化了模拟器,然后我选择了相关的选项,直到我最终得到这些文件:

.firebaserc

{}

firebase.json

{
  "emulators": {
    "auth": {
      "port": 9099
    },
    "ui": {
      "enabled": true,
      "port": 8088
    },
    "singleProjectMode": true
  }
}

如果您只是复制这些文件而不是使用上面显示的命令手动初始化模拟器,那真的没关系。

最后,启动模拟器运行firebase emulators:start --project custom-project-id

Node.js 应用程序

import admin from 'firebase-admin';

admin.initializeApp({ projectId: "custom-project-id" })

admin.auth()
  .createUser({
    displayName: 'John Doe',
    email: 'user@example.com',
    password: 'secretPassword',
  })
  .then((user) => {
    console.log('Successfully created new user:', user);
  })
  .catch((error) => {
    console.log('Error creating new user:', error);
  });

JavaScript 代码是非常自我解释的。 您应该从 admin SDK 初始化 firebase 应用程序,并为其提供一个与您用于模拟器的项目 ID 相同的项目 ID,在本例中为: custom-project-id

正如您所说,在运行 JS 代码的位置设置环境变量很重要: export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

设置完成后,运行node filename.js ,您应该会看到一条成功消息以及详细的用户信息。


这是你应该如何设置模拟器。 我希望这会对您有所帮助,如果没有,请告诉我,以便我可以尝试为您找到合适的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM