【问题标题】:Firebase returns "permission_denied" after a while?Firebase 一段时间后返回“permission_denied”?
【发布时间】: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 askcreating an mcve

标签: javascript node.js firebase


【解决方案1】:

正如 Andrè 所说,这很可能是我的“登录和身份验证”选项卡中的会话长度的问题。

正如他所说,如果不扩展每个用户的会话,就无法延长我的会话长度(是的,有用户登录到我的网站,我不希望他们再登录)。

为此:我对这个问题的简单解决方案是将机器人更改为在站点上几乎没有用户的特定时间重新启动:)

【讨论】:

  • 如果使用秘密,这是没有意义的,这在您的 cmets 中被记录为机器人身份验证的方式。如果你想生成一个长期存在的令牌,你应该只需要sign your own。不难,其实it's trivial
猜你喜欢
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2023-03-24
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
相关资源
最近更新 更多