Я использую PHP CodeIDiter PHP SDK. Это, как я получить пользователь входа в систему из facebook API:Очистить сеанс и файлы cookie при выходе из Facebook с помощью PHP PHP SDK
public $loginuser = "";
function __construct(){
parent::__construct();
/* .......
.......
*/
$fb_config = array(
'appId' => $this->config->item('appID'),
'secret' => $this->config->item('appSecret'),
'default_graph_version' => $this->config->item('graphVersion')
);
$fb = $this->load->library('facebook', $fb_config);
$this->loginuser = $this->facebook->getUser();
}
И проверить авторизовались ли пользователь в с Facebook или нет:
function index($requestuser, $requestid){
if ($this->loginuser) {
/*do something here */
}else{
$myurl = site_url()."/Crowd/index/".$requestuser."/".$requestid;
redirect($this->facebook->getLoginUrl(array(
'scope' => 'email,user_likes,user_friends',
'redirect_uri' => $myurl
)));
}
}
Есть две проблемы, которые я сталкиваетесь при:
При выходе из Facebook (не из приложения) сеанс и файлы cookie в приложении не уничтожаются, поэтому пользователь считается зарегистрированным, даже если пользователь вышел из Fa cebook.
При выходе из приложения сеанс также не будет уничтожен.
Вот выход из системы URL:
$logout_url = $this->facebook->getLogoutUrl(array('next' => site_url() . '/user/logout'));
А вот что делается внутри контроллера User/logout
:
public function logout(){
$this->session->unset_userdata('id');
$this->session->unset_userdata('email');
$this->session->unset_userdata('firstname');
$this->session->unset_userdata('lastname');
$this->session->unset_userdata('status');
$this->session->unset_userdata('isLoggedIn');
$this->session->sess_destroy();
session_destroy();
// Redirect to baseurl
redirect(base_url());
//redirect('login/index');
}
Как я могу проверить авторизованного пользователя? И как уничтожить сеанс входа в Facebook после выхода из системы?