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

OAuth flow, iPhone → Rails → Facebook

Я создаю приложение как с веб-клиентом, так и с клиентом iPhone.

На веб-клиенте я аутентифицирую пользователей через Facebook с помощью Omniauth, затем пользователь может публиковать действия в приложении в Facebook. Это работает хорошо.

У меня возникла проблема с реализацией потока Auth из приложения iPhone.

Я установил Doorkeeper в приложении rails как поставщик OAuth. Хотя я не уверен, как должен реализоваться поток аутентификации.

Я придумал это: Пользователь может войти в Facebook на iPhone и получить токен. Идея заключается в том, чтобы отправить токен вместе с Facebook-uid для приложения rails, сохранить его и аутентифицировать пользователя с помощью Omniauth. После аутентификации пользователя создайте токен с Doorkeeper и отправьте его обратно в приложение iPhone.

Если это первый раз, когда пользователь аутентифицируется против приложения rails, будет создан новый пользователь.

Затем пользователь может выполнить действия против JSON-api, а приложение rails позаботится об интеграции с Facebook, поскольку токен Facebook будет сохранен в записи пользователя.

Приложение также будет охватывать несколько доменов, поэтому мне нужно будет зарегистрировать несколько приложений для Doorkeeper, чтобы обеспечить различные обратные вызовы uri.

Это похоже на жизнеспособное решение? Это безопасно? Существуют ли альтернативные потоки/подходы?

Спасибо.

4b9b3361

Ответ 1

Я бы определенно рекомендовал этот подход. Именно так я реализовал аналогичный сценарий (используя Devise + Omniauth). Я следил за этой записью в блоге, которая очень хорошо описывает реализацию: http://matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/

Ответ 2

Решение, с которым я пошел, суммируется следующим образом:

  • Клиент начинает клятву с помощью Facebook (используя кнопку входа в систему и т.д.)
  • Клиент получает токен аутентификации и отправляет сообщения на сервер
  • Сервер ищет пользователя через вызов FB API w/token
  • Сервер выполняет поиск/создание пользователя на основе идентификатора FB
  • Пользователь вошел в систему, если пользователь с поиском объединения идентификаторов FB успешно прошел

У меня есть диаграмма и более подробная информация здесь: http://www.eggie5.com/57-ios-rails-oauth-flow