当从 node.js 调用 firestore 方法时,如何使用 firestore 的 onSnapshot 侦听器?

How can you use firestore's onSnapshot listener when the firestore method is being called from node.js?

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

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

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

目标:从 rreact 前端在我的集合上设置快照侦听器,而无需经过多个身份验证过程,考虑到我有一个单独的管理员身份验证系统和我的 express api.

有解决办法吗?

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

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

大意是这样的: 向您的授权服务发送授权请求。
像往常一样处理请求。
评估用户是否应该有权访问 Firebase。
如果需要,请使用 firebase-admin 创建自定义令牌并将其发回给用户。
使用客户端上的令牌通过 Firebase.auth

进行身份验证

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

作为不使用 Firebase 客户端 SDK 的替代方案,您可以使用长 运行 节点进程打开 onSnapshot。您的 React 应用程序可以使用 Server-Sent Events or through a WebSocket

从它接收数据