Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

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); } }


Ответ

После долгих попыток рецепт получился следующим.
Получаем access_token из базы данных в новом потоке; Оборачиваем его в DefaultOAuth2AccessToken Создаем DefaultOAuth2ClientContext и добавляем в него DefaultOAuth2AccessToken Создаем OAuth2RestTemplate с настройками и установленным контекстом. Выполняем запросы и ловим UserRedirectRequiredException. Исключение означает, что ключ больше не валидный и нужно запросить новый у пользователя через контроллер.

Комментариев нет:

Отправить комментарий