我有三个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()的连接。
所以问题变成了:
onAuthStateChanged
的连接? firebase.initializeApp()
重新建立与onAuthStateChanged
的连接而不需要任何特殊编码吗? 感谢您的时间。