Потеря авторизации Oauth при перенаправлении приложения на вкладку страницы - PullRequest
2 голосов
/ 30 ноября 2011

Я использую метод авторизации перенаправления Oauth для предоставления авторизации приложению iframe со вкладкой страницы.

Поток работает так:

  • Пользователь загружает вкладку страницы (не авторизовано)
  • Пользователь нажимает на ссылку авторизации
  • Диалог авторизации занимает родительское окно
  • Принятая авторизация перенаправляет мое приложение для регистрации учетной записи пользователя с использованием авторизованной электронной почты.
  • Мое приложение перенаправляет обратно на вкладку страницы
  • Загрузка вкладки страницы приводит к потере авторизации, и пользователь снова видит ссылку авторизации. Промыть, повторить, безуспешно.

Смущает, что приложение работает полностью, если вместо перенаправления на вкладку страницы Facebook я перенаправляю на любой путь в моем приложении (т. Е. В корневой каталог, на страницу пользователя и т. Д.). Только установив перенаправление на URL-адрес вкладки Facebook, пользователь может «загрузиться».

Даже странно, если я ограничу перенаправление для своего приложения, а просто загружу вкладку страницы Facebook, авторизация повсеместно уничтожается. Это означает, что после обновления facebook-page-load, загрузки приложения вне Facebook, пользователю будет предложено снова авторизоваться, и они фактически «выйдут» из моей системы.

Я использую Rails 3.0.1 с Devise 1.4.2 для учетных записей пользователей. Авторизация пользователя передается на регистрацию в Devise (мне нужно отслеживать пользователей в моем приложении - приложении на основе голосования). Devise использует «Поток на стороне сервера», подробно описанный здесь: http://developers.facebook.com/docs/authentication/

Я заблудился относительно того, что могло бы вызвать это. Фейсбук убивает аутентичный cookie? Это происходит?

1 Ответ

0 голосов
/ 23 августа 2012

При первом доступе к вкладке Facebook требуется подписанный запрос: @signed_request = oauth.parse_signed_request(params[:signed_request])

Таким образом, вы можете отправить параметр при перенаправлении на него с других страниц, чтобы проверить, не в первый ли раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...