2011-10-10 3 views
5

Ho un sito Web che utilizza SDK PHP e JS SDK.La disconnessione da JS SDK non si disconnette da PHP SDK

Dopo l'aggiornamento a OAuth in entrambi, ho notato che il logout di JS in realtà non registra l'utente da PHP.

Sembra che la soluzione generale sia effettuare una chiamata per "/ me" e quindi, in caso di errori, presupporre che l'utente abbia effettuato il logout. Tuttavia, non ho bisogno di chiamare/me su ogni pagina di rendering, voglio solo sapere se l'utente ha eseguito l'accesso senza il colpo di performance di una chiamata API FB su ogni rendering.

C'è un modo per PHP SDK per essere informato di un logout che è accaduto tramite l'SDK JS?

alcune cose che ho provato:

  • commento il contenuto del setPersistentData in Facebook.php
  • eliminare manualmente il FBSR _ :: :: appid biscotto

Grazie!

+1

Avete provato qualcosa di simile chiamata AJAX a una pagina con questo [ '$ facebook-> destorySession()'] (https://github.com/facebook/php-sdk/blob/master/src/ base_facebook.php # L1088) metodo sul callback JS? – ifaour

+0

dai un'occhiata a questo recente aggiornamento di php SDK: https://github.com/facebook/php-sdk/commit/4b0e00096c01a959c3f7d9b0655856c17c46383f forse puoi trovarlo rilevante –

+0

La versione dell'SDK che avevo non aveva destroySession, questo sembra aver funzionato Grazie! –

risposta

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

ottenere il token di accesso utente facebook biblioteca

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

e quindi utilizzare questo codice nella funzione di logout

if ($this->facebook_user) 
     { 


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


     redirect($logoutUrl); 
     } 

e fare alcune modifiche nel file di libreria facebook.

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

    ), $params) 
    ); 
    } 
Problemi correlati