cual - ¿Cómo desconectar usuarios usando Facebook Connect en PHP y Zend?
yii vs laravel cual es mejor (3)
Intento crear una aplicación Connect utilizando PHP y Zend Framework. También tengo un sistema de autenticación de usuario basado en Zend_Auth. Ahora, puedo iniciar sesión usando Facebook, pero el cierre de sesión no funciona.
Necesito borrar la identidad de Zend_Auth y eliminar toda la información de inicio de sesión de Facebook. Cuál sería la mejor forma de hacer esto?
facebook_client->expire_session()
y facebook_client->clear_cookie_state();
juntos y también facebook_client->logout($next)
después de llamar a Zend_Auth::getInstance()->clearIdentity()
Ninguno de ellos parece funcionar.
Puede cerrar la sesión del usuario de Facebook y redirigir al usuario a la página de su sitio web con un código PHP como este:
header ("Ubicación:". $ facebook-> getLogoutUrl (array (''next'' => "http://yourwebsite.com/redirectAfterFacebookLogout.php")));
Primero debe llamar al cliente de javascript y luego enviarlos a su secuencia de comandos de log php. Entonces, llama a .js:
FB.Connect.logoutAndRedirect("/path/to/zend/logout/controller");
Verás un menú emergente modal que dice "estás cerrando sesión en este sitio y en Facebook *. Serás redirigido a donde esté tu script de finalización de sesión:
try
{
$facebook->expire_session();
}
catch (FacebookRestClientException $e)
{
//you''ll want to catch this
//it fails all the time
}
Por lo general, también llamo a esta función en el script de cierre de sesión de PHP, solo para estar seguro:
/**
* Remove the local Facebook cookies that get set manually
*
* @return void
*/
protected function _killFacebookCookies()
{
// get your api key
$apiKey = $this->getConfig()->getApiKey();
// get name of the cookie
$cookie = $this->getConfig()->getCookieName();
$cookies = array(''user'', ''session_key'', ''expires'', ''ss'');
foreach ($cookies as $name)
{
setcookie($apiKey . ''_'' . $name, false, time() - 3600);
unset($_COOKIE[$apiKey . ''_'' . $name]);
}
setcookie($apiKey, false, time() - 3600);
unset($_COOKIE[$apiKey]);
}
(NUEVO SDK de FACEBOOK) Para mí, el getconfig () no funcionaría. Así que tuve que encontrar las nuevas funciones del archivo base_facebook.php y agregarle este código. Luego llámalo en tu archivo de llamadas. Antes de hacerlo, llame a $ facebook-> destroySession ();
public function _killFacebookCookies()
{
// get your api key
$apiKey = $this->getAppId();
// get name of the cookie
$cookie = $this->getSignedRequestCookieName();
$cookies = array(''user'', ''session_key'', ''expires'', ''ss'');
foreach ($cookies as $name)
{
setcookie($apiKey . ''_'' . $name, false, time() - 3600);
unset($_COOKIE[$apiKey . ''_'' . $name]);
}
setcookie($apiKey, false, time() - 3600);
unset($_COOKIE[$apiKey]);
}