OAuth flow, iPhone -> Рельсы -> Facebook - PullRequest
12 голосов
/ 06 марта 2012

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

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

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

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

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

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

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

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

Похоже ли это на жизнеспособное решение?Это безопасно?Есть ли альтернативные потоки / подходы?

Спасибо.

1 Ответ

8 голосов
/ 04 января 2015

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

  1. Клиент запускает присягу с помощью Facebook (с помощью кнопки входа и т. Д.)
  2. Клиент получает токен авторизации и отправляет обратно на сервер
  3. Сервер ищет пользователя через вызов FB API с токеном
  4. Сервер выполняет поиск / создание пользователя на основе идентификатора FB
  5. Пользователь вошел в систему, если пользователь с поиском ассоциации FB id успешно

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

...