Problemas ao sair de um site de conexão do Facebook e destruir sessões

Não consigo obter um aplicativo de conexão do facebook que estou construindo para registrar o usuário (desculpe, não há url, pois ainda está em dev). Cada vez que o usuário clica em um link com a class “logout”, o seguinte JS é executado, o que parece funcionar e até mesmo mostra o FB modal declarando que o usuário foi desconectado.

$(document).ready(function(){ $('.logout').click(function(){ //Kill facebook Session FB.Connect.logout(function() { window.location = $('.logout').attr("href"); }); }); }); 

Ao atingir o retorno de chamada acima, o JS envia o usuário para a página de logout onde o PHP novamente força a remoção de uma session personalizada e garante que a session FB foi removida. Em seguida, o usuário é enviado de volta para a página em que eles estavam quando clicaram no link “logout”.

 //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) : '') ); 

No entanto, todo esse processo resulta em que o usuário está logo de volta onde estavam e ainda estava logado. Um segundo clique no link parece fazer o truque e remover a session. Eu monitorei o firebug (w / firecookie) e os relatórios da página de logon do PHP excluindo os cookies da session FB – ainda a próxima página carregada parece ainda usá-los ?!

Se alguém souber completamente DESTRUIR TODOS OS FACEBOOKS ahem … sessões, por favor, fale.

: EDIT: Eu até tentei remover manualmente todos os cookies na página de logout e ainda falha

 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']); } } 

Meu palpite é que, porque você está iniciando as classs api do Facebook, lê a session e define todos os cookies novamente, sua binding Javascript é limpa.

O php facebook lib e o FB js lib usam os mesmos nomes de cookie. (para que você possa fazer login por meio de javascript e o php lib também será logado).

Há uma function específica para um log e ir a uma URL, a propósito:

 FB.Connect.LogoutAndRedirect(url); 

Basta usar a tag e certificar-se de ter autologoutlink='true' Então, quando o usuário estiver logado, imprima a tag e aparecerá como “Logout” ? ” botão

Espero que ajude.

EDITAR: os docos para login-button: http://wiki.developers.facebook.com/index.php/Fb:login-button

Isso funcionou para mim (onde a página de redirecionamento limpa o material do servidor)

  FB.logout(function(response) { window.location.href="/login/signout"; });