Я переношу свое старое приложение 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/>" ; }
Если я правильно читаю ваш код, только если сеанс не возвращается, вы выполняете перенаправление? Согласно комментариям в примере Facebook , даже если вы получите сеанс назад, вы не можете считать его действительным. Вы будете знать наверняка только попытку вызова API, требующего зарегистрированного пользователя. Это лучший способ, с помощью которого я уверенно определить статус входа / выхода из системы.
if ($session) { try { $me = $facebook->api('/me'); if ($me) { //User is logged in } } catch (FacebookApiException $e) { //User is not logged in } }