Есть сервис с авторизацией через 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);
}
}
Ответ
После долгих попыток рецепт получился следующим.
Получаем access_token из базы данных в новом потоке;
Оборачиваем его в DefaultOAuth2AccessToken
Создаем DefaultOAuth2ClientContext и добавляем в него DefaultOAuth2AccessToken
Создаем OAuth2RestTemplate с настройками и установленным контекстом.
Выполняем запросы и ловим UserRedirectRequiredException. Исключение означает, что ключ больше не валидный и нужно запросить новый у пользователя через контроллер.
Комментариев нет:
Отправить комментарий