2011-10-10 14 views
5

Tengo un sitio web que usa tanto el SDK de PHP como el SDK de JS.La desconexión de JS SDK no cierra la sesión de SDK de PHP

Después de actualizar a OAuth en ambos, he notado que cerrar sesión en JS no desconecta realmente al usuario de PHP.

Parece que la solución general es hacer una llamada para '/ me' y luego, si esos errores, supone que el usuario ha cerrado la sesión. Sin embargo, no necesito llamar/me en cada página de renderizado, solo quiero saber si el usuario ha iniciado sesión sin el golpe de rendimiento de una llamada a la API de FB en cada renderizado.

¿Hay alguna forma de que el SDK de PHP se informe de una desconexión que se realizó a través del JS SDK?

Algunas cosas que he intentado:

  • comentario a los contenidos de setPersistentData en Facebook.php
  • eliminar manualmente los fbsr _ :: :: appid galletas

Gracias!

+1

¿Ha intentado algo así llamada AJAX a una página con esta [ '$ facebook-> destorySession()'] (https://github.com/facebook/php-sdk/blob/master/src/ base_facebook.php # L1088) método en la devolución de llamada JS? – ifaour

+0

eche un vistazo a esta actualización reciente de php SDK: https://github.com/facebook/php-sdk/commit/4b0e00096c01a959c3f7d9b0655856c17c46383f tal vez pueda encontrarlo relevante –

+0

La versión del SDK que tenía no tenía destroySession, esto parece haber funcionado ¡Gracias! –

Respuesta

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

obtener el token de acceso de usuario de facebook biblioteca

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

y luego usar este código en la función de cierre de sesión

if ($this->facebook_user) 
     { 


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


     redirect($logoutUrl); 
     } 

y hacer algunos cambios en el archivo de la biblioteca de facebook.

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

    ), $params) 
    ); 
    } 
Cuestiones relacionadas