Tôi tự hỏi liệu có ai đã tìm thấy cách giải quyết cho hành vi mà tôi đang gặp phải hay không.auth.statusChange không kích hoạt trong FB.init nếu người dùng không đăng nhập vào facebook
Hãy ví dụ của mã dưới đây:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[----removed-------]', // App ID
channelUrl : 'http://localhost/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('auth.statusChange',fbLoginStatus);
console.log("getloginstatus");
FB.getLoginStatus(fbLoginStatus);
</script>
Sử dụng FB.init với tình trạng thiết lập là true, về cơ bản gọi getLoginStatus()
theo facebook documentation. Tuy nhiên, đó là apparently intended behaviour rằng điều này sẽ không kích hoạt sự kiện auth.statusChange
, bởi vì giá trị mặc định là 'không xác định', và giá trị cho 'chưa đăng nhập' cũng 'không xác định' (mặc dù nó có thể được biết !!)
Vì vậy, tôi đã phải thực hiện cuộc gọi đến FB.getLoginStatus()
rõ ràng cũng như có trạng thái được đặt thành true nếu tôi cũng muốn trả lời người dùng không đăng nhập vào facebook.
Vấn đề là, điều này dẫn đến chức năng được gọi hai lần nếu người dùng là bất cứ điều gì khác hơn là "đăng xuất".
Có cách nào ngăn chặn điều này không? Tôi nghĩ rằng lựa chọn duy nhất của tôi có thể gọi một chức năng khác nhau để xử lý auth sự kiện thay đổi ..
lạ - lỗi này dường như đã bị xóa. toàn bộ điều này là một thảm họa. Tôi không có manh mối nào khi 'trạng thái: true' thực sự hữu ích. họ nói: 'Nếu bạn đặt trạng thái thành true trong FB.init() gọi, SDK sẽ cố gắng để có được thông tin về người dùng hiện tại ngay sau khi init. Làm như vậy có thể giảm thời gian để kiểm tra trạng thái của người dùng đã đăng nhập nếu bạn đang sử dụng Đăng nhập Facebook, nhưng không hữu ích cho các trang chỉ có các plugin xã hội trên chúng. ' vậy điều này có nghĩa là phản hồi được lưu trong bộ nhớ cache? –