Javascript 对firebase的多个自定义身份验证请求失败

Javascript 对firebase的多个自定义身份验证请求失败,javascript,callback,firebase,custom-authentication,Javascript,Callback,Firebase,Custom Authentication,当尝试一个接一个地获取多个firebase引用时,只调用最后的请求回调 下面我将尝试获取3个不同数据的firebase参考 console.log('authenticating Users'); var firebaseRef1 = new Firebase('https://stckflw.firebaseio.com/Users'); firebaseRef1.authWithCustomToken('<token>',function(error, authData){

当尝试一个接一个地获取多个firebase引用时,只调用最后的请求回调

下面我将尝试获取3个不同数据的firebase参考

console.log('authenticating Users');
var firebaseRef1 = new Firebase('https://stckflw.firebaseio.com/Users');
firebaseRef1.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Users');
} );
console.log('authenticating Messages');
var firebaseRef2 = new Firebase('https://stckflw.firebaseio.com/Messages');
firebaseRef2.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Messages');
} );
console.log('authenticating Emails');
var firebaseRef3 = new Firebase('https://stckflw.firebaseio.com/Emails');
firebaseRef3.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Emails');
} );
console.log(“验证用户”);
var firebaseRef1=新的Firebase('https://stckflw.firebaseio.com/Users');
firebaseRef1.authWithCustomToken(“”,函数(错误,authData){
log(“用户身份验证回调”);
} );
log(“验证消息”);
var firebaseRef2=新的Firebase('https://stckflw.firebaseio.com/Messages');
firebaseRef2.authWithCustomToken(“”,函数(错误,authData){
log(“消息的身份验证回调”);
} );
console.log(“验证电子邮件”);
var firebaseRef3=新的Firebase('https://stckflw.firebaseio.com/Emails');
firebaseRef3.authWithCustomToken(“”,函数(错误,authData){
log(“电子邮件的身份验证回调”);
} );
我看到的日志是这样的

对用户进行身份验证
验证消息
验证电子邮件

电子邮件的身份验证回调

然而,我希望在身份验证时一个接一个地得到所有3个回调,所以我希望看到如下日志

对用户进行身份验证
验证消息
验证电子邮件

用户的身份验证回调
消息的身份验证回调
电子邮件的身份验证回调

我是不是错过了什么导致这种情况发生的原因

我希望以这样一种方式实现它,即所有回调都在身份验证时被触发,而不会丢失任何回调


我在这里创建了一个示例

,因为身份验证是异步进行的,所以这些调用不会在彼此之后执行,而是主要并行执行。启动新的身份验证调用时,它会自动取消现有的身份验证调用。在不太了解您的用例的情况下,您可以在自己的上下文/会话中启动每个Firebase,方法是在创建
Firebase
引用时传入一个额外的(未记录的)参数:

console.log('authenticating Users');
var firebaseRef1 = new Firebase('https://stckflw.firebaseio.com/Users', 'Users');
firebaseRef1.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Users');
} );
console.log('authenticating Messages');
var firebaseRef2 = new Firebase('https://stckflw.firebaseio.com/Messages', 'Messages');
firebaseRef2.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Messages');
} );
console.log('authenticating Emails');
var firebaseRef3 = new Firebase('https://stckflw.firebaseio.com/Emails', 'Emails');
firebaseRef3.authWithCustomToken('<token>',function(error, authData){
    console.log('authentication callback for Emails');
} );

正如加藤所说:最好不要这样做,找到一种方法将所有三个会话的权限合并到一个令牌/会话中。

一次不能有多个身份验证。这是一个很好的例子。这里的最终目标是什么?您可能希望使用单个令牌并设置安全规则以允许更广泛的访问,可能是通过将数据添加到Firebase中,您可以从规则中引用这些数据,以便使用基于角色的权限。
authenticating Users
authenticating Messages
authenticating Emails
authentication callback for Users
authentication callback for Messages
authentication callback for Emails