2012-01-06 93 views
2

我有一個logout.php頁面。Facebook的fbsr和會話不會刪除

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     button.onclick = function() { 
     FB.logout(function(response) { 
      window.location = 'logout.php'; 
     }); 
     } 
    } 
}); 

在退出頁面我有這樣的PHP代碼運行:

if (isset($_COOKIE['fbsr_' . $app_id])) { 
    setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/"); 
    setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/"); 

    unset($_COOKIE['fbsr_' . $app_id]); 
    unset($_COOKIE['PHPSESSID']); 
} 

的問題是,JavaScript並登錄有人在此被點擊註銷有這個JavaScript的重視它叫。 php腳本不會刪除fbsr和phpsessid cookie。我怎樣才能解決這個問題?

+0

還有我嘗試:$ facebook-> destroySession();它仍然不會註銷。 – 2012-01-06 18:41:18

+0

而不是'unset($ _ COOKIE ['PHPSESSID']);'使用'session_destroy();'。這將確保會話清理。 – 2012-01-06 18:43:16

+1

你的意思是你沒有註銷Facebook,或者你沒有註銷你的網站? 'FB.logout'應該處理從Facebook登出,所以你不需要觸摸'fb_sr *'cookie。 – 2012-01-06 18:45:07

回答

5

對於某些應用程序,FB在「.your-domain.tld」域下設置fbsr cookie(注意前面的點)。除非您指定正確的域名,否則Cookie不會被刪除。試試這個,你必須註銷工作:

setcookie('fbsr_' . $appID, '', time()-3600, '/', '.'.$_SERVER['SERVER_NAME']);

這是一個FB的錯誤,使餅乾在註銷被刪除,所以你的$ FB->的getUser()API調用返回前的用戶ID,而不是的NULL或0.這是FB世界;) 問候!

+0

不適用於我。 – Pons 2013-01-03 11:21:14

0

我有同樣的問題,即使所有的餅乾標準桿是正確的(doublechecked) 似乎什麼工作對我來說,是 的setcookie($ cookie_name, '',NULL, '/', ''。$ BASE_DOMAIN ); 注意空值,而不是:時間() - 3600

老實說,我不知道爲什麼,工程和時間() - 3600沒有,但我過檢查,它的工作原理... HTH