【问题标题】:Firebase Server NodeJS failing to connect with Service AccountFirebase 服务器 NodeJS 无法连接到服务帐户
【发布时间】:2017-10-21 18:43:40
【问题描述】:

我有一个非常简单的 NodeJS 服务器,用于监控我们的 Firebase 数据库。我的代码与 Firebase 文档中的示例基本相同:

var firebase = require("firebase");
firebase.initializeApp({
    databaseURL: 'https://myurl.firebaseio.com/',
    serviceAccount: 'path/to/json.json'
})

现在我遇到的问题是,当我从我们的网络中运行此代码时,它似乎不是连接,因为在读取一些数据之后有一段代码并且它永远不会运行:

var nodeRef = this.db.ref("node");
nodeRef.on("child_added", function (snapshot, prevChildKey) {
    // ...
}, function (error) {
    console.log(error);
})

如果我授予每个人对数据库的写入权限,我可以在initializeApp 调用中取出 serviceAccount 设置,一切正常。我已经尝试运行 Fiddler 以查看它可能发出的请求失败的原因,但我根本没有看到 Fiddler 中弹出任何请求。有什么想法需要我们的代理允许吗?

【问题讨论】:

  • 听起来客户端无法使用服务帐户进行身份验证。如果问题与安全相关,则在写入失败时应该会看到错误。日志中有什么相关的吗?一般来说,启用调试日志记录 (firebase.database.enableLogging(true)) 并查看是否显示任何关于它为什么无法进行身份验证的提示可能很有用。
  • 启用日志记录后,它会抛出“错误:证书链中的自签名证书”知道这可能使用的是什么不同的 url,所以我可以让我们的代理将这些 url 列入白名单吗?

标签: node.js firebase firebase-realtime-database


【解决方案1】:

我们的 IT 团队发现了问题所在,我已要求他们在我们的代理服务器中打开 accounts.google.com。它被设置为“允许”而不是“隧道”。

据他们说,HSTS 标头会导致代理上的 SSL 解密,除非它被设置为隧道,这导致了我上面在 cmets 中提到的“自签名证书”错误。

【讨论】:

    【解决方案2】:

    对我来说,禁用 Kaspersky 可以让它工作。你可以试试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-09
      • 2023-03-19
      • 1970-01-01
      • 2021-05-17
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多