2013-05-03 127 views
1

我正在嘗試使用Firebase通過電子郵件/密碼註冊來構建基本Web應用程序,並提供用戶身份驗證。通過Firebase登錄電子郵件/密碼

我的設置,現在包括由以下的main.js文件:從形式和登錄

var dbRef = new Firebase('https://url.firebaseIO.com'); 
var authClient = new FirebaseAuthClient(dbRef, function(error, user) { 
    if (error) { 
    // an error occurred while attempting login 
    console.log(error); 
    } else if (user) { 
    // user authenticated with Firebase 
    console.log('User ID: ' + user.id + ', Provider: ' + user.provider); 
    } else { 
    // user is logged out 
    console.log('logged out!'); 
    } 
}); 
function next(){ 
    window.location = 'index.html'; 
} 
function test(){ 
    authClient.login('password', { 
    email: email, 
    password: password, 
    rememberMe: true 
    },next()); 
    // window.location = 'index.html'; 
} 

我獲得電子郵件/密碼值。這樣可行。但只要我包含一個回調函數,然後將它們重定向到一個新的認證頁面,它就不再起作用。實際上,大部分時間我都會收到「UNKOWN ERROR」(未知錯誤)響應。當我到達下一頁時,我不再登錄。如果我刪除next()函數並保持在同一頁面上,它將起作用 - 即使我然後從控制檯觸發下一個函數。您是否有其他方式進入另一頁?

我很確定存在某種通信問題(可能登錄在頁面切換之前沒有得到返回?),因爲如果我在下一個函數之前添加1s超時,它將起作用。但是,這肯定不是最佳做法?

謝謝!

回答

2

每,authClient.login()方法實際上並不接受回調,因此您看到的問題很可能是在返回回調之前從當前頁面導航離開當前頁面的結果,正如您所建議的那樣。

我建議在auth客戶端實例化過程中傳遞的回調中進行重定向。 (new FirebaseAuthClient(ref, callback)),並在檢測到登錄用戶時重定向。這個回調將在用戶的當前身份驗證狀態實例化時調用一次,然後在用戶的身份驗證狀態發生更改(例如登錄或註銷)時再次調用該回調。

相關問題