#angularjs #rest #twitter #oauth
#angularjs #rest #Twitter #oauth
Вопрос:
У меня есть интерфейсное приложение Angular JS, которое развертывается отдельно http://localhost:9002
, и серверная часть Play Scala, развернутая на http://localhost:9000
Я хочу предоставить RESTful URL-адрес из серверной части, http://localhost:9000/authenticate/twitter
который перенаправляет пользователя в приложение Twitter OAuth с просьбой войти в систему с указанием своих данных Twitter.
Затем я хочу перенаправить обратно в интерфейсное приложение Angular и иметь возможность вызывать любые другие серверные REST-адреса, которые я обеспечил с помощью авторизации в Twitter.
Мне интересно, как «перенаправить» пользователя на страницу авторизации в Twitter, не теряя моего текущего состояния angular. Т.е. могу ли я сделать это во всплывающем окне, и если да, то как? И как мне вернуться из входа в OAuth и сохранить информацию о сеансе пользователя в серверной части?
Лучше всего для меня было бы передать данные для входа в Twitter серверной части и заставить серверную часть вызывать данные авторизации в Twitter и сохранять там сеанс пользователя, а затем просто предоставить интерфейсу токен, который он может использовать для каждого запроса аутентификации, но все перенаправление на страницу входа в Twitter разрушает это. Есть идеи, как реализовать то, что я хочу?
Ответ №1:
Это определенно выполнимо, поскольку я делал это раньше (извините, нет примера — коммерческий код) Я предполагаю, что вы можете открыть twitter во всплывающем окне, поэтому я не буду писать для него код
главное окно
js
window.DaSecretBirdy = function (token) {
//do something with token
}
всплывающее окно
откройте страницу авторизации в Twitter, установите перенаправление на пользовательскую страницу на пользовательской странице, получите токен twitter из строки запроса и вызовите
js
window.opener.DaSecretBirdy(hereIsMyToken)
это концепция, которая работает, имейте в виду, что вам понадобится angularjs $apply, если вы хотите назначить переменную в области видимости из внешнего кода
Комментарии:
1. Хм, как насчет ключа Twitter и секрета, чтобы получить токен первого запроса, который затем будет передан на страницу входа в систему? Где вы их храните? Или у вас есть вызов API на серверной части, который получает токен запроса для вас?
2. Вы имеете в виду SECRET_KEY для идентификации вашего приложения? вы должны получить их после создания приложения в Twitter apps.twitter.com/app/new