Twitter oAuth в моем RESTful API

У меня есть интерфейсное приложение Angular JS, которое отдельно развернуто в http://localhost:9002, а серверное приложение Play Scala развернуто в http://localhost:9000

Я хочу предоставить URL-адрес RESTful из бэкэнда, например http://localhost:9000/authenticate/twitter, который перенаправляет пользователя в приложение Twitter oAuth с просьбой войти в систему со своими данными Twitter.

Затем я хочу перенаправить обратно в приложение внешнего интерфейса Angular и иметь возможность вызывать любые другие URL-адреса REST серверной части, которые я защитил с помощью входа в систему авторизации Twitter.

Мне интересно, как «перенаправить» пользователя на страницу авторизации в Twitter без потери моего текущего состояния angular. Т.е. Могу ли я сделать это во всплывающем окне, и если да, то как? И как мне вернуться из входа в систему oAuth и сохранить информацию о сеансе пользователя в бэкэнде?

Лучше всего для меня было бы передать данные для входа в Twitter на бэкэнд и заставить бэкэнд вызвать материал для аутентификации twitter и сохранить там сеанс пользователя, а затем просто дать интерфейсу токен, который он может использовать для каждого запроса аутентификации, но весь перенаправление на страницу входа в Twitter разрушает это. Есть идеи, как реализовать то, что я хочу?


person jcm    schedule 18.06.2014    source источник


Ответы (1)


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

главное окно

js

window.DaSecretBirdy = function (token) {
//do something with token
}

неожиданно возникнуть

откройте страницу авторизации в Twitter, установите перенаправление на пользовательскую страницу на пользовательской странице, получите токен Twitter из строки запроса и вызовите

js

window.opener.DaSecretBirdy(hereIsMyToken)

это концепция, которая работает, имейте в виду, что вам понадобится angularjs $ apply, если вы хотите назначить переменную в области видимости из внешнего кода

person maurycy    schedule 18.06.2014
comment
Хм, а как насчет ключа и секрета Twitter для получения первого токена запроса, который затем будет передан на страницу входа? Где вы их храните? Или у вас есть вызов API на бэкэнде, который получает для вас токен запроса? - person jcm; 19.06.2014
comment
Вы имеете в виду SECRET_KEY для идентификации вашего приложения? вы должны получить их после создания приложения в Twitter apps.twitter.com/app/new - person maurycy; 19.06.2014