多个Firebases实例

时间:2014-08-19 02:50:49

标签: node.js authentication firebase nest-api

当我尝试制作多个new Firebase(url);实例时,我遇到了问题。

例如:

var token1 = "c.AdASdsAsds...";
var token2 = "c.dkasdEddss...";

var v1 = new Firebase('https://developer-api.nest.com');
v1.auth(token1,function(err){ 
    console.log("Connected 1 "+err);
},function(err){ console.log("Cancel 1: "+err); });

var v2 = new Firebase('https://developer-api.nest.com');
v2.auth(token2,function(err){ 
    console.log("Connected 2 "+err);
},function(err){ console.log("Cancel 2 "+err); });

控制台日志: Connected 2 null ,就是这样......不再是。

所以,这意味着它永远不会从v1.auth();调用回调函数而忽略它,看起来它被v2.auth();覆盖,即使它们是不同的Firebase实例,它会干扰其他一切,例如,v1.child("path").on("value",function(snapshot){});v2.child("path").on("value",function(snapshot){});在发生这种情况时无效。

2 个答案:

答案 0 :(得分:8)

您只能在使用Firebase身份验证的单个页面中进行一次身份验证。

来自this page in the Firebase documentation

  

对Firebase的所有引用都具有相同的身份验证状态。因此,如果您两次调用新的Firebase()并在其中一个上调用auth(),则会对它们进行身份验证。

当然,nest-api身份验证的工作原理可能不同,但我对此表示怀疑。

更新

您提供了another page in the Firebase documentation

的引用
  

即使我们在不同的Firebase引用上调用.auth,也无法同时使用同一Firebase的多个凭据进行身份验证。身份验证状态是全局的,适用于对Firebase的所有引用。 但是,可以创建对两个或多个不同Firebase的引用,并对这些Firebase进行独立验证。

但是在您的代码中,两个连接都属于同一个Firebase:https://developer-api.nest.com。一个Firebase =>一个身份验证状态。

答案 1 :(得分:0)

您可以使用新的Firebase.Context()作为第二个参数创建多个实例!

    var token1 = "c.AdASdsAsds...";
    var token2 = "c.dkasdEddss...";

    var v1 = new Firebase('https://developer-api.nest.com', new Firebase.Context());

    v1.auth(token1,function(err){ 
        console.log("Connected 1 "+err);
    },function(err){ console.log("Cancel 1: "+err); });

    var v2 = new Firebase('https://developer-api.nest.com', new Firebase.Context());

    v2.auth(token2,function(err){ 
        console.log("Connected 2 "+err);
    },function(err){ console.log("Cancel 2 "+err); });