Подтвердить что ты не робот

Аутентификация Rails с помощью Access_token из Facebook

В настоящее время я создаю приложение для iPhone с бэкэндом. Я использую исключительно на facebook Single Sign On (SSO) на iphone, и аутентификация отлично работает на стороне клиента довольно хорошо. Я использую устройство на рельсах в качестве бэкэнда.

ПРИМЕЧАНИЕ Я консультировался Дизайн для проверки подлинности в Facebook в приложении iOS, который уже имеет доступ к защищенной веб-службе уже

Я вижу, что у разработчика есть что-то, называемое token_authenticable, которое по сути является "билетом", описанным в шаге 5 этого потока. Это текущий поток, который я вижу

  • пользователь входит в систему facebook SSO по телефону.
  • пользователь делает вызов myserver.com/sessions/fb_sso с помощью {access_token: X}
  • На стороне сервера (в SessionController # fb_sso я сделаю вызов API в facebook с помощью access_token
  • Если access_token действителен, проверьте, существует ли пользователь в db. Если пользователь не существует, создайте нового пользователя
  • Теперь мы можем вернуть {user_id: X, devise_auth_token: Y} обратно на вызов 1)

Это довольно прямолинейно. Однако у меня есть несколько вопросов:

  • С devise_auth_token это означает, что мне больше не нужно вызывать sign_in ( "пользователь", ресурс) из приложения? (найдено здесь http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/)
  • Где будет лучшее место для ввода кода на 3-4?
  • Я не могу найти многого в Google по этой теме. Почему так мало учебных пособий для такого процесса? Я что-то явно скрываю?
4b9b3361

Ответ 1

Почему вы не можете использовать жемчужину omniauth-facebook. Его очень простое решение для получения токена доступа, если вы используете его, его потенциал будет удвоен. Убедитесь, что вам нужно получить различный токен доступа в другое время входа.

Вы можете перейти по этой ссылке https://github.com/pramodv-nyros/social-login-in-rails

Ответ 2

Вы должны использовать тот же токен на сервере и клиенте ios. Простое решение ставит всю логику на стороне сервера с помощью устройства + omniauth, iOS обрабатывает только пользовательский интерфейс и отвечает со стороны сервера. Если вы хотите получить токен от iOS, например, используйте facebook iOS SDK, вы должны указать токен на стороне сервера, но выглядит небезопасным.