Я не могу выйти из сеанса php в 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.
Других решений пока нет …