【问题标题】:How to reference Firebase Functions config variables from a Firebase-hosted application?如何从 Firebase 托管的应用程序中引用 Firebase 函数配置变量?
【发布时间】:2018-08-04 15:32:10
【问题描述】:

我正在将 Heroku 托管的 ReactJS/NodeJS 应用程序转换为托管在 Firebase 上。因为 Firebase 只处理静态页面,所以我需要重新配置用于开发、暂存、生产环境的私有环境特定变量的配置方式。例如在我定义这些类型的变量之前:

CLIENT_ID=secret_here       
DOMAIN=secret_here    
REDIRECT_URI=secret_here   

在我部署到的 Heroku 环境中,现在我必须从 Firebase CLI 将它们设置为用于开发、暂存和生产的 firebase 函数环境。

Firebase 在 adding environmental configurations to Firebase Functions 上有文档,因此我可以添加键/值对,以便在运行时从 firebase 函数中访问:

firebase functions:config:set mySecret.key="CLIENT_ID" mySecret.id="secret_here"

但是我不清楚如何从 Firebase 托管的静态应用程序(而不是函数)访问添加的配置变量。

是否像简单地从我的应用程序中引用 firebase 函数库并从我的应用程序中检索定义的密钥一样简单(像这样)?

const functions = require('firebase-functions');
...
functions.config().auth0.CLIENT_ID

【问题讨论】:

  • 我不确定您要在这里完成什么。允许从客户端访问这些秘密变量是一个坏主意,这就是为什么没有 SDK 试图使这变得容易的原因。而且您已经找到了如何从 Cloud Functions 中的服务器端代码访问它们。
  • 在 Heroku 上,您可能也有一些在服务器上运行的代码,以及在客户端/浏览器中运行的一些代码。前一种类型的代码应在服务器中继续运行,例如在 Cloud Functions 中。

标签: firebase google-cloud-functions firebase-hosting


【解决方案1】:

您通过提供的链接定义的变量只能通过 Cloud Functions 获得。 Firebase Hosting 提供的静态内容不能直接使用它们。

如果你愿意,你可以创建一个 HTTP 函数,它只从你的环境变量返回 JSON,然后从你的 Web 内容中调用它。请记住,您正在向世界公开您的密钥。

【讨论】:

  • 感谢您的澄清。这一定是一种常见的情况,对吧?需要环境变量/配置的静态内容 - 我如何使用最佳实践解决这个问题,或者我忽略了什么?感谢您的洞察力。
  • 这不是一个常见的问题,因为人们对向世界公开他们的私人秘密和钥匙并不感到兴奋。这样做绝对不是最佳做法。
  • 是的,处理我正在尝试做的事情的最佳实践方法似乎是将当前驻留在“静态内容”上的所有上述应用程序逻辑移动到 firebase 函数中并从那里访问它。这是我需要的答案/解决方案,并且没有更早意识到的上下文。谢谢 - 我会更新问题。
【解决方案2】:

处理我正在尝试做的事情的最佳实践方法是将所有需要环境配置的应用程序逻辑重构为 firebase 函数。然后我可以调用所述函数来引用环境配置并执行使用它们的代码。这是我需要的答案/解决方案,并且没有更早意识到的上下文。感谢您让我实现这一目标。

【讨论】:

  • 你不能只是构建然后服务到 Firebase,因为你可能只需要在构建时配置变量。
猜你喜欢
  • 2019-12-30
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2014-12-24
  • 1970-01-01
  • 2017-10-31
  • 2017-10-02
相关资源
最近更新 更多