Как я могу определить, не истек ли срок сеанса подключения к Facebook на сервере PHP? - PullRequest
1 голос
/ 15 января 2010

Для моего приложения мне нужно знать, действителен ли сеанс Facebook Connect со стороны сервера.

API Javascript позволяет вам узнать, подключены ли вы к Facebook или нет, но кажется, что этого нельзя сделать из клиентской библиотеки PHP.

Сценарий, в котором он мне нужен, похож на следующий:

  1. Войдите в систему The Run Around , используя Facebook connect.
  2. Открыть Facebook в другой вкладке.
  3. Выйти из вкладки Facebook (не «Бежать вокруг»).
  4. Вернитесь на вкладку «Беги вокруг».
  5. Введите новую запись, но снимите флажок «Опубликовать этот прогон в Facebook».

После отправки формы ваш прогон будет опубликован, хотя вы вышли из системы раньше! После этого вызова сайт выйдет из вас, потому что Javascript API попытается проверить ваш статус.

На 5-м шаге приложение должно проверить с помощью Facebook, истек ли сеанс или нет (или использовать обходной путь). Реализация Connect в Run Around имеет недостатки и не должна использоваться в качестве примера из-за этой проблемы безопасности.

Ответы [ 2 ]

1 голос
/ 18 января 2010

Друг рассказал мне, как узнать, действителен ли сеанс или нет:

http://wiki.developers.facebook.com/index.php/Users.getLoggedInUser

Этот метод использует ключ сеанса в качестве параметра и возвращает идентификатор пользователя. Если сеанс истек, возвращается код ошибки.

ПРИМЕЧАНИЕ:

Я не буду использовать этот в своем приложении, как сказал Zombat, мое приложение должно сохранять свой собственный сеанс. Я сделаю то, что делает Digg: будьте последовательны с процедурой входа и выхода, не входя и не выходя автоматически, когда кто-то входит в Facebook.

Run Around пытается сделать все автоматически, но это проблематично, особенно потому, что приложение не проверяет сеанс на стороне сервера.

1 голос
/ 15 января 2010

Хотя я понимаю ваш анализ ситуации, на самом деле это правильное поведение.

The Run Around - это сайт Facebook Connect, что означает, что он полностью отделен от Facebook, как и должно быть. Когда вы используете FB Connect для связи своей учетной записи FB с сайтом Run Around, он создает локальный сеанс и учетную запись для вас в базе данных Run Around. Технически это то, с чем вы вошли в The Run Around. Как только это произойдет, ваш сеанс на Facebook совершенно не имеет значения, если только The Run Around не хочет получить информацию о вас из Facebook.

Существуют варианты предоставления сайту FB Connect более тесной связи с Facebook, если вы хотите. См. Определение состояния подключения и параметры FB.init () для получения дополнительной информации об этом. Run Around использовал это для принудительного выхода из локального сеанса, когда обнаружил, что вы больше не вошли в Facebook. Однако это происходит только после изменения страницы или действия и запуска Javascript для проверки состояния сеанса FB.

Общий эффект от того, как все это работает, заключается в том, что сайты Facebook Connect сохраняют возможность локально управлять пользователями и используют функции Facebook только тогда, когда это необходимо и / или возможно.

...