2015-09-29 1 views
0

Я использую 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 
     ))); 
    } 
} 

Есть две проблемы, которые я сталкиваетесь при:

  1. При выходе из Facebook (не из приложения) сеанс и файлы cookie в приложении не уничтожаются, поэтому пользователь считается зарегистрированным, даже если пользователь вышел из Fa cebook.

  2. При выходе из приложения сеанс также не будет уничтожен.

Вот выход из системы 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 после выхода из системы?

ответ

1

Проверьте, если пользователь все еще вошли в его/ее facebook счет

if ($facebook->getUser()) 
{ 
    try 
    { 
     $user = $facebook->api('/me'); 
     //continue 
    } 
    catch(FacebookApiException $e){ 
     $facebook->destroySession(); 
     //destroy 
    } 
}