【问题标题】:How can you use firestore's onSnapshot listener when the firestore method is being called from node.js?当从 node.js 调用 firestore 方法时,如何使用 firestore 的 onSnapshot 侦听器?
【发布时间】:2021-02-12 01:41:43
【问题描述】:

我有一个管理站点,它有一个反应前端,使用 redux 操作,使用 node.js 应用程序作为服务器,它使用 firebase-admin 来完成工作。

我想使用 firestore 的 onsnapshot 监听器。但我不确定这在 HTTP 协议中是如何工作的?

我无法从我的前端应用程序中使用 firebase-admin,也无法从 HTTP 协议中的后端创建实时数据库功能。

目标:考虑到我使用我的 express api 为管理员提供了一个单独的身份验证系统,我可以从 rreact 前端为我的集合设置快照侦听器,而无需经过多个身份验证过程。

有解决办法吗?

编辑: 我的客户端应用程序当前使用 Firebase Web 应用程序配置数据进行了初始化,但是因为我使用我自己的 Express 服务器对管理员进行身份验证,所以 Firebase Web SDK 没有通过 Firebase 进行身份验证,所以我没有我需要的数据的权限。我不确定我是否需要一个服务帐户,或者一个带有额外设置的 Web 应用配置或什么

【问题讨论】:

  • 你有什么理由不在浏览器上使用 firebase-js-sdk 吗?
  • 是的,我需要管理员权限,因为它是一个管理站点@nvitius
  • 您可以添加 Firestore 安全规则,以允许管理员用户访问您需要的所有数据。这样你就可以从客户端调用 onSnapshot
  • 你能用参考来回答吗?我一直在尝试使用 firebase web sdk,但我的设置有一个与 firebase auth 分开的身份验证系统。所以当我使用 web sdk 时,我没有经过技术验证,因此正在处理权限问题。而且我不想在主firebase auth bc中创建管理员用户帐户,这看起来很hacky。我以为 admin sdk 只能在节点环境中使用? @nVitius
  • @nVitius 在尝试从 redux 操作中使用 admin sdk 时,除了错误之外什么也没得到。如果你可以在 react 环境中使用 admin sdk 为什么只有 node.js、python、java、go 和 .NET 以它们支持的语言列出?

标签: node.js reactjs firebase google-cloud-firestore firebase-admin


【解决方案1】:

我的建议是使用 signInWithCustomToken() 将 Firebase JS SDK 集成到您的客户端应用程序中。 做起来并不复杂。虽然我认为这在很大程度上取决于您当前的身份验证设置的工作方式。

总体思路是这样的: 向您的身份验证服务发送身份验证请求。
像平常一样处理请求。
评估用户是否应该有权访问 Firebase。
如果需要,请使用 firebase-admin 创建自定义令牌并将其发送回用户。
使用客户端上的令牌通过 Firebase.auth 进行身份验证

您应该确保有 Firestore 规则以允许管理员用户访问您需要的数据。

作为不使用 Firebase 客户端 SDK 的替代方案,您可以使用一个长时间运行的节点进程来打开 onSnapshot。你的 React 应用可以使用Server-Sent EventsWebSocket 接收来自它的数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2018-08-08
    • 1970-01-01
    • 2020-12-17
    • 2021-01-22
    • 2018-11-15
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多