Facebook没有注销
问题描述:
我无法登录我的php facebook会话用户。这里是我当前的代码:Facebook没有注销
public function facebookAction()
{
if(isset(Core::session('FacebookAuthSession')->sessionObject)){
// $oldFetchmode = Core::db()->getFetchMode();
// Core::db()->setFetchMode(Zend_Db::FETCH_OBJ);
// $userObj = new Core_Model_User();
// $facebookUid = Core::session('FacebookAuthSession')->graphObject->backingData['id'];
// $sel = $userObj->select();
// $sel->where('fuid=:fuid')->bind(array("fuid"=>$facebookUid));
// $data = $userObj->fetchRow();
// $userId = $data->id;
// Core::db()->setFetchMode($oldFetchmode);
// Ranger_Application_Util::logUserIn($userId);
//Core::dump(Core::session('FacebookAuthSession'));
//die();
Ranger_Application_Util::redirectToAppUrl('/app/home');
} else {
FacebookSession::setDefaultApplication('xxx', 'xxx');
$helper = new FacebookRedirectLoginHelper('http://jobrangers.com/newhomepage/html/en/auth/facebooklogin');
$loginUrl = $helper->getLoginUrl();
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper ('Redirector');
$redirector->gotoUrl ($loginUrl)->redirectAndExit();
}
}
public function facebookloginAction()
{
FacebookSession::setDefaultApplication('xxx', 'xxx');
$helper = new FacebookRedirectLoginHelper('http://jobrangers.com/newhomepage/html/en/auth/facebooklogin');
$session = null;
try {
$session = $helper->getSessionFromRedirect();
Core::session('FacebookAuthSession')->sessionObject = $session;
} catch(FacebookRequestException $ex) {
} catch(\Exception $ex) {
}
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graphObject = $response->getGraphObject();
Core::session('FacebookAuthSession')->graphObject = $graphObject;
$oldFetchmode = Core::db()->getFetchMode();
Core::db()->setFetchMode(Zend_Db::FETCH_OBJ);
$userObj = new Core_Model_Resource_Users();
$backingData = Core::session('FacebookAuthSession')->graphObject->asArray();
$facebookUid = $backingData['id'];
$sel = $userObj->select();
$sel->where('fuid=:fuid')->bind(array("fuid"=>$facebookUid));
$data = $userObj->fetchRow();
Core::db()->setFetchMode($oldFetchmode);
if($data){
$userId = $data->id;
} else {
$data = array();
$data['date_created'] = new Zend_Db_Expr("NOW()");
$data['date_updated'] = new Zend_Db_Expr("NOW()");
$data['fuid'] = $facebookUid;
$data['first_name'] = $backingData['first_name'];
$data['last_name'] = $backingData['last_name'];
$userId = $userObj->insert($data);
}
Ranger_Application_Util::logUserIn($userId);
}
的数据被保存在一个Zend_Session_Namespace
(Core::session('FacebookAuthSession')
)
这里是我的注销代码:
public function logoutAction() {
$username = Ranger_Application_Util::getStorageData('username');
Core::log ("User $username logged out.", Zend_Log::INFO);
Ranger_Application_Util::makeUserOffline (Ranger_Application_Util::getStorageData ('id'));
Zend_Auth::getInstance()->clearIdentity();
$_SESSION = array();
Zend_Session::destroy();
Core::session('FacebookAuthSession')->unsetAll();
$_COOKIE = array();
$locale = Core::registry ('Zend_Locale');
$this->_redirect ('/' . $locale->getLanguage() );
}
我尝试删除所有会话的会话目录。我还使用了Zend_Session::destroy()
和Core::session('FacebookAuthSession')->unsetAll()
,它应该取消设置FacebookAuthSession Namespace
中的数据。我不太明白,但它只是回到app home
。
答
太简单了。我需要注销Facebook。