На мой взгляд, я не думаю, что ваше приложение должно оставаться в системе, пока пользователь уже вышел из Facebook.
Один из сценариев, где это может быть нежелательно, это: что, если я использую ваше приложение с общедоступного компьютера. После того как я вышел из Facebook, ваше приложение все еще «запоминает» меня. И теперь любой, кто использует этот компьютер, примет мою личность Facebook в вашем приложении.
Я думаю, что проблема в том, что вы установили свой собственный файл cookie, чтобы запомнить статус входа пользователя в Facebook. Очевидно, что когда пользователь выходит из самого Facebook, ваш cookie не очищается. Таким образом, на данный момент ваш файл cookie не синхронизирован со статусом Facebook.
Я рекомендую вам не использовать свой собственный файл cookie для запоминания статуса пользователя на Facebook. Для этого всегда полагайтесь на сам Facebook.
Общая стратегия заключается в том, что всякий раз, когда пользователь входит в ваше приложение, вы должны проверять статус входа в Facebook, используя механизм, предоставленный Facebook. Таким образом, ваше приложение будет синхронизировано с Facebook с точки зрения статуса входа пользователя.
Лично я использую этот фрагмент кода для вызова API Javascript Facebook с целью входа пользователя в систему:
/*
* Init code for Facebook connect
*/
window.fbAsyncInit = function() {
FB.init({
appId : FACEBOOK_APP_ID, // App ID
channelUrl : CHANNEL_URL, // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});
// check facebook login status
FB.getLoginStatus(function(response) {
console.log("FB login status: " + response.status);
if (response.status === 'connected') {
showWelcome(); //display welcome message
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook, but not connected to the app
showFbLogin(); //display Facebook Login button
} else {
// the user isn't even logged in to Facebook.
showFbLogin(); //display Facebook Login button
}
});
// subscribe to facebook events
FB.Event.subscribe('auth.authResponseChange', function(response) {
fbAuthResponseChanged(response);
});
};