Использование стороннего сервиса oauth2 в приложении для iPhone с бэкэндом Java REST

Я работаю над сервером Java REST, обслуживающим приложение для iPhone. Теперь нам нужно интегрироваться со сторонним сервисом, предоставляемым протоколом oauth2. Это новое для меня, поэтому я читал и писал некоторый код «доказательства концепции», но у меня большая проблема или я принципиально чего-то не понимаю...

Я сделал простую веб-страницу с кнопкой «Войти с помощью XXX», которую пользователь видит в веб-представлении. Когда он нажимает на нее, открывается страница входа в стороннюю службу, и он может одобрить мое приложение, и в это время они перенаправят пользователя на URL-адрес, который я указал с кодом авторизации в качестве параметра. Этот URL-адрес указывает на службу REST на моем сервере.

Проблема в том, что этот URL-адрес должен быть абсолютно таким же, как тот, который я настроил при применении своего приложения для их службы. Поскольку я использую сервер REST, у меня нет возможности узнать, о каком пользователе мы говорим, когда происходит перенаправление на мой сервер (сеанса нет). Я хотел сделать эту идентификацию с некоторым параметром запроса или пути, но они не разрешают это.

Что-то из этого имеет для вас смысл, или я реализую это неправильно? Единственное возможное решение, которое я могу сейчас представить, будет с помощью файлов cookie, но мне это не очень нравится...


person Nemanja Kovacevic    schedule 13.08.2012    source источник


Ответы (1)


Да, это имеет смысл. У вас есть несколько разных вариантов, попробуйте один из них:

  • Сохраните файл cookie с некоторым идентификатором пользователя и прочитайте его после перенаправления.
  • Используйте параметр state авторизации. запрос на передачу некоторого идентификатора пользователя. Провайдер обязан вернуть его вам обратно в своем редиректе.
person Jan Gerlinger    schedule 13.08.2012
comment
Ага :) Параметр состояния был именно тем, что мне было нужно. Я не знал об этом, но хотел реализовать то же самое, но не мог из-за того, что имел в виду ограничение API... - person Nemanja Kovacevic; 14.08.2012