我正在尝试使用node {s Here设置firebase服务器。但是,我的代码无法使用管理员权限从任何表中读取数据或从中获取数据,即使是具有公共读写权限的表。
这是我在服务器端的代码:
var firebase = require('firebase');
firebase.initializeApp({
serviceAccount: "./App.json",
databaseURL: "https://userPosts.firebaseio.com"
});
//
var db = firebase.database();
var ref = db.ref("testPosts");
ref.once("value", function(snapshot){
console.log(snapshot.val());
}, function(error){
console.log(error);
});
以下代码是如何在服务器上设置安全性:
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
},
"testPosts": {
".read": "auth != null",
".write": "auth != null"
}
}
如果我在服务器端注释serviceAccount行,则会在没有问题的情况下读取数据,当我尝试访问它没有访问权限的节点时,访问将被拒绝(这是正常行为)。
我对Firebase管理员权限的理解是,无论访问权限如何,我都应该可以访问所有表节点。
如果有人可以帮助解决这个问题我真的很感激。我已经坚持了一段时间了。
-----------------------编辑----------------
我已通过添加
启用了调试功能firebase.database.enableLogging(true);
我收到以下错误:
p:0: Listen called for /posts default
p:0: Making a connection attempt
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)
p:0: data client disconnected
p:0: Trying to reconnect in 77.64995932509191ms
0: onDisconnectEvents
任何人都可以帮助解决错误及其真正意义吗?
答案 0 :(得分:0)
经过一些挖掘,看来我的服务器时间就是问题所在。 我的服务器时间与Network Time Protocol (NTP)不同步。
如果有人遇到同样的问题,以下link可能会有用。