Как проверить, зарегистрирован ли пользователь в новой 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/>" ; } 

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

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

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