簡體   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