這個問題是關係到我的另一個問題獲取的Facebook用戶登錄狀態:How to know if a user log out of Facebook, FB.Event.Subscribe not work通過實時
在這個問題,我想,當用戶登出的Facebook得到回電事件。但由於目前還沒有合適的答案,我必須嘗試另一種方式。我試圖通過投票javascript來獲取用戶的登錄狀態,像這樣:
function checkLogin()
{
alert("in");
FB.getLoginStatus(function(response) {
if (response.status == "connected") {
// logged in and connected user, someone you know
alert("ok - 5 seconds has passed");
} else {
// no user session available, someone you dont know
alert("not ok");
}
});
t=checkLogin("timedCount()",5000);
}
這樣做的問題是:該函數只返回正確的結果在第一次被調用。之後,看起來結果被緩存,並且我始終接收到「連接」作爲響應,儘管用戶默默地由瀏覽器中的另一個選項卡註銷。
這並不好,因爲當時Facebook彈出一個對話框,要求用戶登錄。但是,如果用戶取消它,他仍然可以使用我的應用程序(導致他與我的應用程序服務器的會話尚未過期!)。
在document,FB dev的說:
當你調用FB.getLoginStatus,一個HTTP請求可以是 www.facebook.com以檢查用戶的當前狀態。但是,如果 FB.getLoginStatus已經被這個瀏覽器會話期間調用, 和會話已經在cookie中堅持着,facebook.com可能並不需要一個HTTP請求到
所以我覺得這個效果由緩存引起。我想知道爲什麼Facebook這樣做。
有沒有人知道這個問題的解決辦法?
感謝您的幫助,
晃龍
只是爲了更新問題:FB已經拉出了一些變化,我們需要更新代碼上方的代碼。詳情請見:https://developers.facebook.com/blog/post/525/ –