PHP ve Zend Facebook Connect kullanarak kullanıcıların oturumu nasıl?

2 Cevap php

I am trying to build a Connect app using PHP and the Zend Framework. I also have a Zend_Auth based user authentication system. Now, I am able to log in using Facebook but log out is not working.

I need to clear the Zend_Auth identity as well as remove all Facebook login info. What would be the best way to do this?

I güvenilir facebook_client->expire_session() ve facebook_client->clear_cookie_state(); birlikte ve aynı zamanda facebook_client->logout($next) Zend_Auth::getInstance()->clearIdentity() sonra arama

Bunların hiçbiri çalışmıyor gibi görünüyor.

2 Cevap

Eğer php oturum kapatma komut göndermek, sonra javascript istemci logoutu first aramak zorunda. Yani, çağrı JS.:

FB.Connect.logoutAndRedirect("/path/to/zend/logout/controller");

Siz "Sen çıkış komut olduğu yere yönlendirilmiş olacak bu site ve facebook * dışarı günlüğe diyor kalıcı bir popup görürsünüz:

try
{
    $facebook->expire_session();
}
catch (FacebookRestClientException $e)
{
    //you'll want to catch this
    //it fails all the time
}

Ben genellikle de sadece güvenli olması için, PHP çıkış komut dosyası bu işlevi çağırır:

/**
 * 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]);       
}

Sen facebook kullanıcı çıkış ve bunun gibi PHP kodu ile web sayfasına kullanıcıyı yönlendirebilir:

header ("Location:". $ facebook-> getLogoutUrl (array ('next' => "http://yourwebsite.com/redirectAfterFacebookLogout.php")));