6
當用戶訪問我的站點時,我使用onAuthStateChanged
來確定用戶是否已從前一會話登錄。onAuthStateChanged不一致
主要問題是,對於一小部分用戶來說它不一致 - 代碼似乎沒有檢測到他們確實有一個有效的登錄會話正在進行。
以下代碼位於應用程序本身上,用戶在頁面或登錄頁面重定向後即會在該頁面上顯示。
該網站的主頁還使用onAuthStateChanged
來確定用戶是否應直接重定向到應用程序。登錄頁面使用signInWithEmailAndPassword,當登錄成功時,將它們重定向到應用程序頁面(具有以下代碼)。
firebase.auth().onAuthStateChanged(function (authUser) {
if (authUser) return initApp(authUser);
// issue: sometimes users that *should* be signed-in get signed in anonymously here
firebase.auth().signInAnonymously().then(function (authUser) {
initApp(authUser);
}
});
是onAuthStateChanged
只是不是我應該用於我的用例?任何想法如何改善/解決這個問題?
編輯:這SEEMS發生更多的用戶在手機上。
確保您在登錄頁面重定向之前等待signInWithEmailAndPassword解決。這可能是因爲你提前重定向到應用程序頁面。上面的代碼也會在匿名登錄時調用兩次initApp,因爲onAuthStateChanged觀察者將在匿名登錄後再次觸發。 – bojeil
謝謝。右鍵 - 代碼再次運行,但我在'initApp'函數中有'userInitiated'變量來正確處理已經登錄的用戶。即使用戶由於WiFi連接丟失或隨機Firebase重新連接而重新連接,但需要恢復initApp功能以恢復以前的聯機狀態。 –
是的,我一直在確保signInWithEmailAndPassword在重定向之前得到解決。 –