Tôi đang viết một ứng dụng web nơi người dùng sẽ cần phải đăng nhập bằng Facebook (đăng nhập Facebookless không có ý nghĩa trong ngữ cảnh của ứng dụng). Lý tưởng nhất, sau lần truy cập đầu tiên của họ, khi người dùng truy cập /index
, webapp của tôi thấy cookie được lưu trữ trước đó và tự động đăng nhập người dùng một cách tự động và chuyển đến ứng dụng (/app
).Đăng nhập Facebook cho trang web: Phương pháp hay nhất để xử lý đăng xuất Facebook của người dùng?
Sự cố của tôi phát sinh khi người dùng đăng xuất khỏi Facebook và quay lại ứng dụng của tôi. Vì cookie trên miền của tôi vẫn sẽ có mặt và số oauth_token
của chúng tôi sẽ vẫn hợp lệ (chúng hiện trong 60 ngày), tôi vẫn có thể tự động đăng nhập người dùng và ứng dụng sẽ hoạt động như mong đợi.
Với tôi, có vẻ như ứng dụng vẫn đăng nhập bằng tài khoản Facebook của họ ngay cả khi họ không đăng nhập vào Facebook. Tôi chơi xung quanh trên Stackoverflow chính nó; nó cũng cho phép hành vi này. Lo lắng của tôi có bị thất lạc hay không hoặc có cách nào được khuyến nghị để xem liệu người dùng có đăng nhập vào Facebook hay không khi họ yêu cầu /index
từ máy chủ của tôi lần đầu tiên.
Vấn đề là, cookie FBJS không xóa trên tên miền của tôi khi họ đăng xuất facebook. Sau khi đăng xuất khỏi facebook và truy cập ứng dụng của tôi, ứng dụng của tôi vẫn thấy cookie FBJS. Tôi không thể biết họ không thực sự đăng nhập cho đến khi tôi tải javascript. Điều này bổ sung thêm một chuyển hướng nếu chúng * được đăng nhập, bởi vì chúng phải tải trang/login của tôi, trong đó js sau đó phát hiện ra chúng đã đăng nhập và chuyển hướng chúng đến/app –
Cách tôi nhìn thấy nó, mọi lúc ứng dụng của bạn đang làm bất cứ điều gì thay mặt cho người dùng đã đăng nhập, bạn cần phải kiểm tra xem người dùng có thực sự còn đăng nhập vào thời điểm đó hay không. Bất kể cookie nào mà ứng dụng của bạn đặt để ghi nhớ trạng thái ghi nhật ký người dùng Facebook, bạn không nên dựa vào nó, hoặc bạn nên giữ nó trong trạng thái đồng bộ với trạng thái Facebook. –
Ví dụ: bạn có thể gọi hàm FB.getLoginStatus mỗi lần trước khi ứng dụng của bạn đăng lên Facebook. Điều này có thể không phải là cách tối ưu để làm điều đó, tất nhiên. –