2011-10-10 16 views
5

Mam stronę internetową, która używa zarówno pakietu SDK PHP, jak i JS SDK.Wylogowanie z JS SDK nie wylogowuje się z PHP SDK

Po aktualizacji do OAuth w obu przypadkach zauważyłem, że wylogowanie z JS w rzeczywistości nie wylogowuje użytkownika z PHP.

Wygląda na to, że ogólnym rozwiązaniem jest wykonanie wywołania dla "/ me", a następnie, jeśli te błędy, zakładają, że użytkownik wylogował się. Nie muszę jednak wywoływać mnie przy każdym renderowaniu strony, chcę tylko wiedzieć, czy użytkownik jest zalogowany bez wydajności przy wywołaniu API FB przy każdym renderowaniu.

Czy istnieje sposób, aby pakiet SDK PHP był informowany o wylogowaniu za pośrednictwem zestawu SDK JS?

Niektóre rzeczy Próbowałem:

  • zakomentuj zawartość setPersistentData w Facebook.php
  • ręcznie usunąć fbsr _ :: AppID :: ciasteczko

dzięki!

+1

Czy próbowałeś coś takiego wywołania ajax do strony z tym [ '$ facebook-> destorySession()'] (https://github.com/facebook/php-sdk/blob/master/src/ base_facebook.php # L1088) metoda wywołania zwrotnego JS? – ifaour

+0

spójrz na tę ostatnią aktualizację do php SDK: https://github.com/facebook/php-sdk/commit/4b0e00096c01a959c3f7d9b0655856c17c46383f być może znajdziesz ją odpowiednią –

+0

Wersja SDK, której nie miałem destroySession, to Wydaje się, że zadziałało. Dzięki! –

Odpowiedz

0
setcookie(session_name(), '', time()-42000, '/'); 
unset($_SESSION); 
0

uzyskać token dostępu użytkownika z facebook biblioteki

$access_token = $this->facebook->getAccessToken(); 

a następnie użyć tego kodu w funkcji wylogowania

if ($this->facebook_user) 
     { 


     $logoutUrl = $this->facebook->getLogoutUrl()."&access_token=".$access_token; 


     redirect($logoutUrl); 
     } 

i poczynić pewne zmiany w pliku biblioteki facebook.

public function getLogoutUrl($params=array()) { 
    return $this->getUrl(
     'www', 
     'logout.php', 
     array_merge(array(
     'next' => $this->getCurrentUrl(), 

    ), $params) 
    ); 
    } 
Powiązane problemy