2016-09-08 20 views
6

Khi người dùng truy cập vào trang web của tôi, tôi sử dụng onAuthStateChanged để xác định xem người dùng đã đăng nhập từ phiên trước đó hay chưa.onAuthStateThay đổi không nhất quán

Vấn đề chính là nó không phù hợp với một số ít người dùng - mã dường như không phát hiện thấy họ có phiên đăng nhập hợp lệ đang diễn ra.

Mã sau đây là trên chính ứng dụng, người dùng ở trên trang đó sau khi chuyển hướng từ trang chủ hoặc trang đăng nhập.

Trang chủ của trang web cũng sử dụng onAuthStateChanged để xác định xem người dùng có được chuyển hướng trực tiếp đến ứng dụng hay không. Trang đăng nhập sử dụng signInWithEmailAndPassword và khi đăng nhập thành công, chuyển hướng chúng đến trang ứng dụng (có mã sau).

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 không phải là điều tôi nên sử dụng cho trường hợp sử dụng của mình? Bất kỳ ý tưởng làm thế nào để cải thiện/sửa lỗi này?

Chỉnh sửa: SEEMS này xảy ra nhiều hơn với người dùng trên điện thoại di động.

+1

Đảm bảo bạn đợi signInWithEmailAndPassword để giải quyết trước khi chuyển hướng trên trang đăng nhập của bạn. Có thể bạn đang chuyển hướng đến trang ứng dụng sớm. Ngoài ra, mã của bạn ở trên gọi initApp hai lần khi đăng nhập ẩn danh vì người quan sát onAuthStateChanged sẽ kích hoạt lại sau khi đăng nhập ẩn danh – bojeil

+0

Cảm ơn bạn. Quyền - mã chạy lại nhưng tôi có biến 'userInitiated' trong hàm' initApp' để xử lý đúng cách người dùng đã đăng nhập rồi. Tôi cần các chức năng initApp được gọi lại đôi khi để khôi phục lại trạng thái trực tuyến trước đó mặc dù người dùng đã đi offline do kết nối lại vì mất kết nối wifi, hoặc Firebase ngẫu nhiên kết nối lại. –

+0

Và có, tôi đã đảm bảo rằng signInWithEmailAndPassword đã được giải quyết trước khi chuyển hướng. –

Trả lời

Các vấn đề liên quan