Подтвердить что ты не робот

Как проверить, зарегистрирован ли пользователь в новой facebook php api

Я переношу свое старое приложение FB в новый графический API, используя PHP API

У меня есть две страницы: общедоступные (которые не требуют входа пользователя) и частные (которые делают)

Таким образом, код каждой отдельной страницы php в моем приложении работает следующим образом:

if (this_page_requires_user_login){
      $facebook = new Facebook(...) ;
      $session = $facebook->getSession ;
      if (!$session){
              $url =$facebook.getLoginUrl(array(next => current_page );
              echo "<fb:redirect url=$url/>" ;

}
// the rest of the code continues here

Теперь, как вы можете видеть, этот способ работы пересылает каждую страницу в URL-адрес входа, а пока он работает, он также медленный и добавляет строку & session = {bla} к очень одиночному URL-адресу.

Мне нужен способ проверить, где пользователь уже зарегистрировался, прежде чем перенаправить его на страницу входа. Но я не могу найти такой метод в php api. Какой лучший способ сделать это?

ИЗМЕНИТЬ

Казалось, это трюк

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
       // here comes your code for user who is logged in
    }
  } catch (FacebookApiException $e) {
    login()
  }
}else{
 login()
}

function login(){

  $url =$facebook.getLoginUrl(array(next => current_page );


      echo "<fb:redirect url=$url/>" ;
}
4b9b3361

Ответ 1

Если я правильно читаю ваш код, только если сеанс не возвращается, вы делаете перенаправление? Согласно комментариям в примере Facebook, даже если вы получите сеанс назад, вы не можете считать его действительным. Вы будете знать наверняка только попытку вызова API, требующего зарегистрированного пользователя. Это лучший способ, с помощью которого я убедился в правильности определения статуса входа/выхода из системы.

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}