firebase.initializeApp()不会重新建立与onAuthStateChanged的连接

时间:2017-05-21 22:55:02

标签: javascript firebase firebase-authentication

我有三个firebase实例:dev,staging和prod。 我的应用程序需要使用电子邮件和密码对用户进行身份验证。 在登录时,我的应用程序不知道用户是否在dev,staging或prod数据库中。

所以我决定遍历我的不同配置文件并尝试逐个登录每个数据库。伪代码中的逻辑如下所示:

    var success = reinitializeFirebaseAndLogin(prodConfig, email, password);
    if (!success) {
        success = reinitializeFirebaseAndLogin(stagingConfig, email, password);
        if (!success) {
            success = reinitializeFirebaseAndLogin(devConfig, email, password);
            if (!success) {
                display("Login Failed.");
            }
        }
    }

    function reinitializeFirebaseAndLogin(config, email, password) {
        reinitializeDefaultFirebase(config);
        firebase.auth().signInWithEmailAndPassword(email, password);  //if successful, onAuthStateChanged() should be called.
    }

    // http://stackoverflow.com/questions/37582860/firebase-v3-how-to-reinitialize-default-app
    function reinitializeDefaultFirebase(config) {
        firebase.app().delete().then(function() {
            firebase.initializeApp(config);
        });
    }

问题是一旦调用了reinitializeDefaultFirebase()方法,就不再调用onAuthStateChanged。 似乎firebase.app()。delete()失去了与firebase.auth()。onAuthStateChanged()的连接。

所以问题变成了:

  1. 如何重新建立与onAuthStateChanged的连接?
  2. 这个逻辑是正确的还是有更好的方法?
  3. 我应该firebase.initializeApp()重新建立与onAuthStateChanged的连接而不需要任何特殊编码吗?
  4. 感谢您的时间。

0 个答案:

没有答案