Admin SDK 不再从 firebase 捕获事件

No longer captures the event from firebase by Admin SDK

我已经在我的节点服务器上安装 运行 firebase admin,直到今天它一直 运行 运行良好,没有任何错误告诉我发生了什么,它只是停止工作。

var admin = require("firebase-admin");

            var serviceAccount = require("mycom-firebase-adminsdk-d1ebt123456.json");

            var app = FireBaseAdapter.admin.initializeApp({
                credential: FireBaseAdapter.admin.credential.cert(serviceAccount),
                databaseURL: "https://xxxx.firebaseio.com"
            });

var db = app.database();
var ref = db.ref("messages"); // this node actually exists in my db.


ref.on("value", function(snapshot) {
// this will never be called - which has been working before.

  console.log(snapshot.val());
}, function (errorObject) {
  console.log("The read failed: " + errorObject.code);
});

我什至将它包装在 try catch 中以打印出错误,但没有任何错误。我可以在帐户中登录 firebase 控制台并看到我的数据库没有任何变化(小数据库)(虽然它似乎比正常情况下慢)。 firebase Admin SDK 有问题吗?感谢任何帮助。

在花了很多时间查找原因后,我找到了问题所在。 由于我找不到任何方法来启用 firebase-admin 的日志,所以在一切都静默运行的情况下解决问题是死路一条,所以我转而使用 firebase 包来有记录

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

firebase.database.enableLogging(true); // <=== important

我的问题与this question

非常相似

然后我可以看到实际的错误:

p:0: Failed to get token: Error: Error refreshing access token: invalid_grant (Invalid JWT: Token must be a short-lived token and in a reasonable timeframe)

上解释了此问题的解决方案。这个问题是由于执行代码的计算机时钟同步不良造成的,延迟了 5 分钟(由于内部时钟的电池故障)。 当我手动将我的计算机的内部时间更改为正确的时间(或者我完全重置了我的计算机日期时间)时,它又开始工作了。

在我的例子中,重置日期时间和时区后,firebase 自动再次运行,我不需要重新生成另一个服务帐户。