【发布时间】:2021-12-18 13:15:37
【问题描述】:
此问题之前已关闭,告诉我“更新问题,使其仅关注一个问题;”我不知道问题是什么,如果我知道了,我不会发布这个问题。无论如何,我会在这里做一些澄清:
-
我之前只使用普通的 Firebase 模块(使用“npm i firebase”导入的模块);之前一切都很完美。该问题与 Firebase Admin SDK 的身份验证(据我所知)有关。我不明白我应该如何将它发送到 Heroku 构建而不显示我的 GitHub 上的服务帐户密钥 JSON 文件。
-
至于 GOOGLE_APPLICATION_CREDENTIALS 路径,有没有一种方法可以让我不必在每个会话中都设置它? Heroku 应用程序每天重新启动一次,我需要以某种方式自动执行此输入过程(或完全跳过它)。这就是我目前的理解方式。以下是上一个答案的引述:
当我设置 GOOGLE_APPLICATION_CREDENTIALS 路径时,这不是只在我的本地机器上设置的吗?
环境变量仅适用于已设置它们的单个机器和进程。如果您希望将其设置在另一台机器和进程上,则必须单独安排。根据文档:
将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含您的服务帐号密钥的 JSON 文件的文件路径。 此变量仅适用于您当前的 shell 会话,因此如果您打开一个新会话,请重新设置该变量。
-
我的主要问题如下:“我错误地实现了 Firebase Admin SDK。我该如何以正确的方式做到这一点?”
-
即使只是发布一个可以提供帮助的指南链接也将不胜感激(尽管我知道这通常是不鼓励的,因为链接有时会断开)。
原文:
注意:这是我第一次使用 Firebase Admin SDK,所以我真的不确定自己在做什么(虽然我已经使用过很多次 Firebase)。
最近,我决定回到我的一个较旧的 Discord 机器人并正确验证其对 Firebase 的请求(我以前没有这样做过,因为我以前从未从服务器进行过身份验证,并且不认为它是可能的)。我发现了 Firebase Admin SDK,它听起来非常适合我的需求(该机器人托管在 Heroku 上,作为记录)。
我找到了本指南:https://firebase.google.com/docs/admin/setup,但有些事情我无法理解(请注意,这些纯粹是修辞,您无需在回答中回答它们;我只是提供以便您了解我的思维过程):
- 当我设置 GOOGLE_APPLICATION_CREDENTIALS 路径时,这不是只在我的本地计算机上设置它吗?我也可以尝试在服务器上运行导出命令(在 CLI 中使用“heroku run”),但路径将指向服务器上不存在的文件(因为服务帐户密钥 JSON 文件已打开我的本地机器)。我需要在 Heroku 中设置环境变量吗?
- “admin.credential.applicationDefault()”如何知道如何获取凭据?
我找不到任何其他有意义的指南。
我目前的设置方式一定是错误的,因为读取和写入会静默失败。
Firebase 设置代码:
// Setup Firebase:
const admin = require('firebase-admin');
// Initialize Firebase:
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: "https://<APP>.firebaseio.com" // I removed the actual <APP> name to ask this question
});
let database = admin.database();
database.ref("test").set("Hello World!"); 之类的内容不会更改数据库中的数据,也不会引发任何错误(我也尝试将 .then 和 .catch 附加到此末尾;仍然没有)。这是在我切换到 Firebase Admin SDK 之前工作的(我之前只是使用“firebase”模块,而不是我现在使用的“firebase-admin”模块)。读取数据也是如此。
任何帮助将不胜感激。
【问题讨论】:
-
您引用的“答案”仍然正确。看来您主要是在询问如何在 Heroku 上设置环境变量。我会重写您的问题以更具体地说明这一点,因为您遇到问题的并不是管理 SDK。
-
@DougStevenson 我已经知道如何设置环境变量了;服务帐户密钥信息存储在 JSON 文件中。
-
好的,我不清楚你的问题是什么。实际上,我在您的帖子中阅读了两个问题 - 我建议将其澄清为一个问题,该问题解释了哪些问题没有按您期望的方式工作,或者您在哪里遇到了这个问题。
标签: firebase heroku firebase-realtime-database firebase-admin