Как выполнить аутентификацию Facebook в Rails?

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

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

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

  • I make a call to the graph API requesting the /me resource.
    • If the call is successful, the user is logged in.
    • Если вызов завершается сбоем (вызывает OAuthException), я запрашиваю новый токен доступа, перенаправляя пользователя на конечную точку Facebook OAuth для получения кода, а затем получаю новый токен доступа путем обмена этим кодом.

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

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

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

  • Рельсы v3.0.8
  • Драгоценный камень коала v1.2.1

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


person Graham Swan    schedule 08.02.2012    source источник


Ответы (1)


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

person Anthony Bishopric    schedule 08.02.2012
comment
+1 за это. Используйте драгоценные камни «omniauth» и «omniauth-facebook», настройте учетные данные своего приложения, и все готово. Нет, правда, ты закончил. - person Ariejan; 08.02.2012
comment
Я попытаюсь пройти аутентификацию с помощью Omniauth и посмотреть, смогу ли я заставить его работать. - person Graham Swan; 16.02.2012