6

当我尝试制作多个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();即使它们是不同的 Firebases 实例,并且它会干扰其他一切,例如,当发生这种情况时v1.child("path").on("value",function(snapshot){});v2.child("path").on("value",function(snapshot){});它不会工作。

4

2 回答 2

9

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

Firebase 文档中的这个页面

所有对 Firebase 的引用共享相同的身份验证状态。因此,如果您两次调用 new Firebase() 并在其中一个上调用 auth(),它们都将通过身份验证。

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

更新

您提供了Firebase 文档中另一页的报价:

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

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

于 2014-08-20T11:09:34.837 回答
1

您可以使用 new 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); });
于 2016-06-30T07:19:59.880 回答