登录时,Firebase onAuthStateChange会两次触发

时间:2016-12-14 04:52:05

标签: javascript jquery firebase firebase-realtime-database firebase-authentication

我完全知道注册后立即激活onAuthStateChange函数,但实际情况并非如此。用户使用用户名和密码登录后,我遇到此功能两次出现问题。它第一次启动时,我追溯到堆栈,它来自我的代码,但第二次,它来自Firebase JS文件本身。我很困惑,因为我不明白为什么他们开火了。我使用的是Firebase的网络版。代码在下面提供。

TL; DR:我使用的是Firebase的网络版。用户使用用户名和密码登录后,onAuthStateChange函数会激活两次。

// callback function
firebase.auth().onAuthStateChanged(function(user) {
    console.log("change");
    if (authCounter == 0) {
        authCounter = 1;
    } else {
        if (user) {
            currentUser = user.uid;
            dbRef = firebase.database().ref().child(currentUser);
            handleEvent(9);
        } else {
            handleEvent(10);
        }
    }
});

// sign in function
firebase.auth().signInWithEmailAndPassword(email, pass).catch(function(error) {
            displayError(error.code);
        });

1 个答案:

答案 0 :(得分:0)

您的代码似乎没有任何错误。

之前我遇到过同样的问题。我认为监听器被调用了两次但实际上,登录函数被调用了两次/不必要(你不需要登录登录所以一切看起来都很好,除了听众被解雇两次这一事实)。

此外,重新加载页面时不会自动注销,因此当您调用登录功能(第二次)时,您可能已经登录(第一次触发)。

这就是我能想到的,希望这会引导你朝着正确的方向前进。