2012-05-04 3 views
0

По какой-то причине, когда я проверяю, зарегистрирован ли пользователь в Facebook, я делаю api-вызов по $ facebook-> api ('/ меня'); чтобы проверить, является ли токен доступа недопустимым, если пользователь вышел из Facebook, я могу видеть информацию о пользователе, даже если я выйду из страницы facebook (на другой вкладке), и я не могу определить, вышел ли пользователь из facebook.

public function __construct() { 
    $facebook = new Facebook(array(
     'appId' => $this->_fbappid, 
     'secret' => $this->_fbappsecret, 
     'cookie' => true, 
    )); 
    $this->_facebook = $facebook; 
} 

public function checkFacebookLogin() { 
    try { 
     $user = $this->_facebook->getUser(); 
     $user_profile = $this->_facebook->api('/me','GET'); 
     return true; 
    } catch(FacebookApiException $e) { 
     return null; 
    } 

}

Любой человек может мне помочь?

ответ

0

Вы можете удалить постоянные данные перед проверкой для пользователя

facebook->clearAllPersistentData() 

Если вы хотите, чтобы проверить статус вы должны перенаправить пользователя на login_status.php с помощью метода:

facebook->getLoginStatusUrl($params) 

Получить URL статуса входа в систему, чтобы получить статус от Facebook.

Параметры:

  • ok_session: URL, чтобы перейти к тому, если сеанс найден
  • no_session: URL, чтобы пойти, если пользователь не подключен
  • no_user: URL для перехода если пользователь не подписан в facebook
+0

ok, используя facebook-> clearAllPersistentData() работает, но только на странице после входа в систему. Если я перейду на другие страницы, а затем вернусь на страницу приложения, он снова вернет мне кнопку входа (очевидно, если вы очистите все постоянные данные :)), и это не так хорошо. Я не могу использовать второе решение, потому что у меня есть только php-страница с приложением facebook, поэтому я не могу использовать другие URL-адреса. Но я не могу понять, почему API возвращает мне информацию о пользователе! Сделать api-вызов после вызова getUser() не следует сказать, что токен недействителен (если пользователь вышел из системы)? Почему Api не «поймает исключение? –

Смежные вопросы