$ facebook-> getLogoutUrl (); O link não faz login do usuário no Facebook

Minha história de usuário atual é que user1 está logado em meu site e facebook (essas contas estão conectadas, etc.).

User1 faz o login no meu site, mas não no Facebook.

Após este usuário2 logar na sua conta, mas a esquerda sobre a session do usuário1 parafusos com a interação do usuário2 com o meu site e para quem eles postam.

Então, para consertar isso, fiz com que ele verifique se o usuário que efetuou login realmente possui o registrado no Facebook atualmente (isso resultaria em fazer o login no Facebook, etc.) e ele mostra um link que deve permitir ao usuário sair. .

Ao clicar no link, eles vão para o Facebook e retornam ao site. Mas se você abrir uma nova guia e ir para o Facebook, o usuário1 ainda está logado.

Como posso obter este link para trabalhar … o que está acontecendo. Isso é um bug com o api ou o que? …

Editar: Continuei testando com ids de usuário de valor carregando e com tokens de access válidos, mas ainda não consegui acessar o link de logout.

Um pouco tarde, mas aqui vai minha contribuição:

Use os params quando você gerar o URL de logout, redireciona para uma página em que você destruir a session usando a function API do Facebook para isso.

Aqui um exemplo:

$logoutUrl = $facebook->getLogoutUrl(array("next" => "http://mydomain.com/page4logout")); 

No page4logout você pode instar o object do Facebook e executar o seguinte:

 $facebook->destroySession(); 

Depois disso, você pode fazer um redirecionamento.

exclua o cookie e a session do Facebook manualmente. Aqui está a minha solução, como resolvi o problema há algum tempo, pensa que é um bug do Facebook:

 setcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]); unset($_SESSION['fb_'.$this->getAppId().'_code']); unset($_SESSION['fb_'.$this->getAppId().'_access_token']); unset($_SESSION['fb_'.$this->getAppId().'_user_id']); unset($_SESSION['fb_'.$this->getAppId().'_state']); 

$ this-> getAppID é o seu ID de aplicativo do Facebook, deve ser claro; o)

Uma maneira de verificar isso é usando o SDK do PHP e o JavaScript SDK juntos.

Quando o usuário visitar seu site, chame FB.getLoginStatus () e verifique se o authResponse.userID corresponde ao que o SDK do PHP retorna em $facebook->getUser(); (Você pode fazer isso através de uma chamada AJAX se isso ajudar).

Você sabe que se o ID do usuário não coincide, então algo está errado aqui. Chamar $ Facebook-> getLogoutUrl () deve registrar o usuário fora do seu site e do Facebook, mas, se não, tente usar session_destroy() no seu código para limpar as sessões. Em seguida, redirecione o usuário de volta para $ facebook-> getLoginUrl () e faça-os entrar novamente. Isso corrigirá a correspondência incorreta na ID do usuário e você pode repetir o processo quando eles retornarem ao seu site.

Eu vi isso acontecer em outros aplicativos, o que me leva a acreditar que este é um problema do Facebook. O JavaScript SDK não parece verificar se o cookie ainda é válido (se já existe).