Estoy usando Facebook php-sdk en mi aplicación iframe de Facebook para obtener el estado de inicio de sesión del usuario. Inmediatamente después de cerrar la sesión usando Facebook Account> Log out link, la sesión no se destruye aún. Debo esperar unos minutos antes de que caduque la sesión anterior, luego mi aplicación volverá a obtener el estado de inicio de sesión correcto.Facebook API - La sesión aún existe después de que el usuario cierra la sesión
Espero que el facebook se mate y la sesión cuando el usuario cierre la sesión. ¿Cómo mato manualmente la sesión?
Aquí está mi código:
$initParams = array(
'appId' => $conf['app_id'],
'secret' => $conf['secret_api_key'],
'cookie' => TRUE,
);
$fb = new Facebook($initParams);
$fb->getSession(); // will return a session object eventhough user signed out!
resuelto:
llamando $fb->api('/me')
destruirá la sesión si el usuario ha iniciado sesión previamente. he cambiado mi código de la siguiente manera:
if ($session)
{
try
{
$fbuid = $fb->getUser();
$me = $fb->api('/me');
}
catch(FacebookApiException $e){}
}
Si la llamada a la API no tiene éxito, $session
se establecerá en NULL. Comportamiento muy extraño, no explico todo lo que está pasando aquí, pero resolvió mi problema de tener el objeto residual de la sesión no actualizado mediante el método getSession()
.
Si el El enlace de la url de cierre de sesión se ha creado correctamente, no debería haber ningún problema con su código. ¿Puede mostrarnos su página de inicio? – ifaour
No creo que sea un comportamiento extraño, ya que está claramente establecido en los comentarios [aquí] (https://github.com/facebook/php-sdk/blob/master/examples/example.php) _No sabemos si sigue siendo válido hasta que realicemos una llamada a la API utilizando la sesión. – ifaour
de hecho, es malo que no haya leído correctamente los comentarios del código de ejemplo. Gracias por su entrada – flochtililoch