Как выполнить аутентификацию Facebook в Rails? - PullRequest
0 голосов
/ 08 февраля 2012

Некоторое время я боролся за проверку подлинности Facebook для приложения canvas.Мой подход заключается в следующем:

  1. Проверьте сеанс пользователя на наличие токена доступа.
  2. Проверьте куки пользователя Facebook на наличие токена доступа.
  3. Проверьте параметры дляa signed_request.

Если токен доступа обнаружен во время любого из этих 3 шагов:

  • Я вызываю API-интерфейс графа, запрашивая ресурс /me,
    • Если вызов успешен, пользователь входит в систему.
    • Если вызов не удается (вызывает OAuthException), я запрашиваю новый токен доступа, перенаправив пользователя на OAuth Facebook.конечная точка для получения кода, а затем получения нового токена доступа путем обмена этим кодом.

Если токен доступа не найден в сеансе, файлах cookie или signed_request, яотобразить целевую страницу.

Это правильная процедура? Я заметил, что часто в параметрах отсутствует signed_request, если срок действия маркера доступа пользователя истек.Метод Facebook одобряет запрос свежего токена доступа, что приводит к 2 перенаправлениям, обращенным к пользователю, а также обмену API, который кажется немного тяжелым.

Настройка, в которой я работаю:

  • Rails v3.0.8
  • Koala gem v1.2.1

Я следовал этим инструкциям:

1 Ответ

3 голосов
/ 08 февраля 2012

Рассматривали ли вы использовать Omniauth?(https://github.com/intridea/omniauth) Он объединяет все это и позволяет легко распространяться и на другие сайты.

...