我似乎無法獲得我正在構建的Facebook連接應用程序,以便將用戶註銷(遺憾的是沒有網址,因爲它仍在開發中)。每次用戶單擊「註銷」類的鏈接時,下面的JS運行似乎都能正常工作,甚至顯示FB模式表明用戶已註銷。麻煩註銷Facebook連接網站和銷燬會話
$(document).ready(function(){
$('.logout').click(function(){
//Kill facebook Session
FB.Connect.logout(function() {
window.location = $('.logout').attr("href");
});
});
});
在到達上面的回調中,JS將用戶的註銷頁面,PHP再次強制刪除自定義會話,並確保了FB會話已被刪除。然後用戶返回到他們點擊「註銷」鏈接時所在的頁面。
//Remove our site session
Auth::logout();
/* FAIL
//Send user to FB logout page and then back here
$logout_url = $this->fb->get_logout_url(site_url($return_to ? base64_url_decode($return_to) : ''));
// Clear any stored state
$this->fb->clear_cookie_state();
exit(header("Location: ". $logout_url));
*/
//FAIL
//$this->fb->logout(site_url($return_to ? base64_url_decode($return_to) : ''));
//FAIL
//Remove user (is this needed..?)
//$this->fb->set_user(NULL, NULL);
//Remove the FB session cookies (in case the JS didn't)
$this->fb->clear_cookie_state();
// Redirect to privious page
redirect(($return_to ? base64_url_decode($return_to) : ''));
然而,在用戶整個過程的結果是右後衛在那裏他們仍然登錄。在鏈路上的第二次點擊,似乎這樣的伎倆,雖然拆除會話。我監視了firebug(w/firecookie)和PHP註銷頁面報告刪除了FB會話cookie - 但下一頁加載似乎仍然使用它們?!
如果有人知道如何完全
毀掉所有的FACEBOOKS
呃......會議然後請說出來。
:編輯: 我甚至嘗試手動刪除登出頁面上的所有Cookie,它仍然無法
if($_COOKIE) {
foreach($_COOKIE as $name => $value) {
//Get the current cookie config
$params = session_get_cookie_params();
// Delete the cookie from globals
unset($_COOKIE[$name]);
//Delete the cookie on the user_agent
setcookie($name, '', time()-43200, $params['path'], '', $params['secure']);
}
}
如果Javascript剛剛清除了所有的cookie,PHP如何從cookie讀取會話? 此外,LogoutAndRedirect與使用註銷和window.location(這是我使用的)具有相同的問題。 – Xeoncross 2009-11-10 23:16:18
JavaScript破壞PHP_SESSION cookie?數據存儲在某個地方,所以這意味着一個cookie或post/get請求參數。 – Les 2009-11-11 08:11:12
我知道每個頁面的畫布頁面都有GET參數 - 但不能連接站點。而且由於使用了window.location,所以也沒有發送POST數據。無論如何,你的建議讓我現在考慮一些我可以測試的東西,所以我會接受你的答案,然後報告我的發現。 – Xeoncross 2009-11-12 19:18:32