如何在PHP和Zend使用Facebook Connect注销用户?(How to log out

2019-07-05 04:42发布

我试图建立一个连接使用的应用程序PHP和Zend框架。 我也有一个基于Zend_Auth的用户认证系统。 现在,我能够登录使用Facebook的,但注销不工作。

我需要清除Zend_Auth的身份,以及删除所有Facebook登录信息。 什么是做到这一点的最好方法是什么?

我试图facebook_client->expire_session()facebook_client->clear_cookie_state(); 同时也facebook_client->logout($next)调用后Zend_Auth::getInstance()->clearIdentity()

他们都不似乎工作。

Answer 1:

你必须调用JavaScript客户端退出,然后将它们发送到你的PHP脚本注销。 所以,调用.js文件:

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

你会看到一个模式弹出,说:“你要登录这个网站和Facebook *您会被重定向到任何地方您注销脚本是:

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

我平时也呼吁在PHP脚本注销此功能,只要是安全的:

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


Answer 2:

你可以注销Facebook的用户和用户重定向到具有类似这样的PHP代码您的网站页面:

标题( “位置:” $ facebook-> getLogoutUrl(阵列( '下一个'=> “http://yourwebsite.com/redirectAfterFacebookLogout.php”)));



Answer 3:

(新的Facebook SDK)对于我来说了getconfig()不会work.So我必须找到从base_facebook.php文件中的新功能,并添加这段代码在里面。 然后调用它在你调用文件。 在此之前,调用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]);        
    } 


文章来源: How to log out users using Facebook Connect in PHP and Zend?