【发布时间】:2016-01-29 20:08:44
【问题描述】:
我开发了一个机器人,可以对我的 firebase 进行“心跳”。我的意思是:我的机器人每 10 秒用当前时间更新我的 Firebase 中的一个条目,让我的网站知道这是机器人最后一次在线。
代码
function heartbeat() {
var time = Math.floor(Date.now() / 1000);
fb.child("bot").set({
heartbeat: time
});
}
PS:不要介意除以 1000,还有其他原因 ;)
但是,问题是在执行此操作一段时间后(大约几个小时),机器人会失去(?)它的权限吗?并得到错误:
"FIREBASE WARNING: set at <path> failed: permission_denied".
当我重新启动机器人时,一切都恢复正常了吗?
我是否缺少某种限制?我目前正在使用“免费计划”,并认为这可能是原因,但我不明白为什么我的计划的任何限制都会影响这个脚本?
谢谢!
【问题讨论】:
-
听起来像是一个简单的会话长度案例。在您的 Firebase 仪表板中,转到 Login & auth 选项卡,会话长度应位于右上角。你能检查一下吗?
-
啊,我明白了。会话长度设置为 24 小时,这是有道理的。我有什么办法可以说“管理员用户”应该有更长的会话时间?机器人使用“秘密”进行身份验证?谢谢!
-
不可能说某些用户的会话时间更长,但您可以使用自定义令牌并为该令牌设置会话时间。不是我的专业知识,但看看firebase.com/docs/web/guide/login/custom.html。
-
秘密不会过期,所以我很难理解发生了什么。你能添加你如何验证的代码吗?
-
实际上,完整的复制(当然减去你的秘密)真的是在这里提供帮助的最低限度。见how to ask 和creating an mcve。
标签: javascript node.js firebase