#java #spring #spring_security #oauth2
Есть сервис с авторизацией через OAuth2 (например, vk.com). Есть clientId и clientSecret.
Нужно написать демона, который будет делать какие-то запросы к API сервиса.
Возможно ли это сделать в фоновом режиме и автоматически получать access_token по
истечению срока? Например, многие сервисы после авторизации больше не запрашивают данные
пользователя.
UPD. Мне нужно сохранять access_token (например, в БД), а потом из обычного потока
работать с OAuth2RestTemplate.
public void run() {
// access_token = получаем из БД сохраненный access_token.
// создаем restTemplate из access_token
while (true) {
Map map = restTemplate.getForObject(..., Map.class);
}
}
Ответы
Ответ 1
После долгих попыток рецепт получился следующим. Получаем access_token из базы данных в новом потоке; Оборачиваем его в DefaultOAuth2AccessToken; Создаем DefaultOAuth2ClientContext и добавляем в него DefaultOAuth2AccessToken; Создаем OAuth2RestTemplate с настройками и установленным контекстом. Выполняем запросы и ловим UserRedirectRequiredException. Исключение означает, что ключ больше не валидный и нужно запросить новый у пользователя через контроллер.
Комментариев нет:
Отправить комментарий