Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 什么';“这是创建一个”的最佳方式;“bot账户”;在火基_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Firebase 什么';“这是创建一个”的最佳方式;“bot账户”;在火基

Firebase 什么';“这是创建一个”的最佳方式;“bot账户”;在火基,firebase,firebase-realtime-database,firebase-authentication,Firebase,Firebase Realtime Database,Firebase Authentication,我想创建一个firebase应用程序,允许真正的用户互相发送消息或向机器人发送消息 我希望真正的用户能够使用oauth提供程序进行注册,firebase使注册变得简单。一旦注册,他们应该能够创建一个“机器人帐户”,可以用来验证他们想要编写的任何脚本,与我的firebase应用程序交互 示例脚本可以监听任何发布“Hello”消息的人,并回复“Hello to you too!”: 我的问题是如何最好地验证这些机器人?我有两个想法 使用服务帐户()。在他们的脚本中,他们会调用如下内容进行身份验证:

我想创建一个firebase应用程序,允许真正的用户互相发送消息或向机器人发送消息

我希望真正的用户能够使用oauth提供程序进行注册,firebase使注册变得简单。一旦注册,他们应该能够创建一个“机器人帐户”,可以用来验证他们想要编写的任何脚本,与我的firebase应用程序交互

示例脚本可以监听任何发布“Hello”消息的人,并回复“Hello to you too!”:

我的问题是如何最好地验证这些机器人?我有两个想法

  • 使用服务帐户()。在他们的脚本中,他们会调用如下内容进行身份验证:

    Firebase.initializeApp({
      databaseURL: "https://db.firebaseio.com/",
      serviceAccount: "service-account.json",
      databaseAuthVariableOverride: {
        uid: "user-id"
      }
    });
    
  • 允许真实用户通过生成自定义令牌(或者我可能需要在线编写一个令牌来帮助他们生成并签署此令牌)来创建bot用户,然后在脚本中调用:

    firebase.auth().signInWithCustomToken(token)
    
  • 第一种方法似乎建议服务器连接到firebase,但在我的例子中,我担心这些服务帐户对于用户创建的机器人来说太强大了。尽管如此,可以将服务帐户的使用限制为普通用户(使用databaseAuthVariableOverride),但这不是强制性的,因此可能会被滥用

    第二种方法似乎是为集成自定义身份验证系统/实现SSO而设计的,但除此之外,它似乎可以实现这一目的。它的优点是,这些bot帐户在安全规则等方面可以像真实用户帐户一样处理

    那么,哪种方法是最好的,或者谁能推荐一种更好的方法呢

    谢谢! 亚当


    编辑5/7/16 21:50 GMT

    我一直在尝试实施选项2,但我认为它会失败。Firebase会话将过期(默认为24小时),自定义令牌也将过期(3600秒)。因此,如果我的机器人在24小时后注销,并且自定义令牌不能用于重新登录,那么用户将需要生成一个新的自定义令牌。这不起作用-机器人应该保持登录状态

    这就引出了第三种选择:

  • 为每个bot提供电子邮件地址和密码,在使用中使用脚本身份验证,然后在会话过期时使用重新身份验证
  • 这似乎并不理想,因为它有效地使用了电子邮件地址和密码(为现实生活中的用户设计)来验证服务器,但我仍然无法确定选项1是否更好,以及是否有可能使选项2起作用

    如有任何建议,我们将不胜感激


    编辑11/7/16 20:36 GMT


    firebase node.js库不直接支持选项3。

    最好的方法是适用于所有用例的方法。听起来使用服务帐户不符合您的安全要求,因此只能为您的机器人程序铸造自定义令牌。谢谢弗兰克-您不认为这是对自定义令牌方法的错误使用吗?i、 e.自定义令牌是否意味着不用于其他用途?我也有点担心“如果您只需要从您自己的服务器连接到Firebase实时数据库,请不要使用自定义令牌。相反,请使用Firebase server SDK”这一页上的“现在尝试实现选项2…”。。。是否可以使用signInWithCustomToken()实现无限会话长度?
    firebase.auth().signInWithCustomToken(token)