2016-05-31 18 views
6

Tôi có một ứng dụng sử dụng Firebase làm chương trình phụ trợ. Ứng dụng của tôi triển khai API xác thực Firebase bằng thông tin đăng nhập Email và mật khẩu đơn giản để xác thực.Cách duy trì phiên người dùng sau khi thoát ứng dụng trong Firebase

Mọi thứ hoạt động tốt ngoại trừ một vấn đề. Tôi muốn duy trì phiên người dùng ngay cả sau khi người dùng đóng ứng dụng.

FIRAuth.auth() ?. currentUser? có tất cả các thuộc tính của người dùng (ví dụ: uid, email, token ...) cho người dùng hiện tại hoạt động tốt. Vấn đề tôi nhận thấy là FIRAuth.auth() ?. currentUser? không liên tục. Vì vậy, sau khi thoát khỏi ứng dụng và khởi chạy lại, nó trả về null.

Tôi không muốn hỏi người dùng mỗi khi họ mở ứng dụng để đăng nhập lại. Có cách nào để giái quyết vấn đề này không?

+1

căn cứ hỏa lực tự động kéo dài token của user trong keychain iOS. Nó được tự động khôi phục khi ứng dụng khởi động lại. Bạn có thể theo dõi điều này bằng 'addAuthStateDidChangeListener' (xem [Tài liệu xác thực Firebase] (https://firebase.google.com/docs/auth/ios/manage-users#get_the_currently_signed-in_user)). Nếu đó không phải là vấn đề, hãy đăng [mã hoàn chỉnh tối thiểu tái tạo vấn đề] (http://stackoverflow.com/help/mcve). –

Trả lời

23

Firebase nên đã theo dõi người dùng của bạn thông qua các lần khởi chạy ứng dụng.

Vấn đề của bạn có thể là sử dụng trực tiếp FIRAuth.auth()?.currentUser? thay vì cách tiếp cận được đề xuất.

Cách khuyến cáo để có được những người sử dụng hiện nay là bằng cách thiết lập một listener trên đối tượng Auth:

FIRAuth.auth()?.addStateDidChangeListener { auth, user in 
    if let user = user { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
} 

Bằng cách sử dụng một người biết lắng nghe, bạn đảm bảo rằng các đối tượng không phải là Auth trong một trung gian trạng thái — chẳng hạn như khởi tạo — khi bạn nhận được người dùng hiện tại.

Trong ứng dụng của riêng tôi, tôi sử dụng cả hai. Nếu người dùng không tồn tại với phương thức đầu tiên, nó sẽ chuyển sang phương thức thứ hai và nếu điều đó không thành công, màn hình đăng nhập/đăng ký hiện tại.

+1

Ah! Tôi chỉ thử phương pháp này và bạn hoàn toàn chính xác. Tôi nghĩ rằng tôi đã phải mất một cái gì đó. Cảm ơn rất nhiều vì đã đáp ứng. – Lavvo

+0

Tôi nên đặt conditon này ở đâu? Nếu không có trong chế độ xem đăng nhập? –

+0

Bất cứ nơi nào bạn thích. Bất cứ nơi nào bạn cần để có được người dùng hiện tại. Cá nhân tôi quấn tất cả các mã này trong các lớp học của riêng tôi. –

0

FirAuth đã được đổi tên Auth

Vui lòng sử dụng mới nhất pod căn cứ hỏa lực

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