我正在尝试使用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()
他们似乎都没有工作.
你必须调用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]); }