如何在PHP和Zend中使用Facebook Connect注销用户?

2022-08-31 01:04:33

我正在尝试使用PHP和Zend Framework构建一个Connect应用程序。我还有一个基于Zend_Auth的用户身份验证系统。现在,我可以使用Facebook登录,但注销不起作用。

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

我尝试了,一起,也打了电话facebook_client->expire_session()facebook_client->clear_cookie_state();facebook_client->logout($next)Zend_Auth::getInstance()->clearIdentity()

它们似乎都不起作用。


答案 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]);       
}

答案 2

您可以注销Facebook用户并使用PHP代码将用户重定向到您的网站页面,如下所示:

header(“位置: ” .$facebook->getLogoutUrl(array('next'=>“http://yourwebsite.com/redirectAfterFacebookLogout.php”)));


推荐