Учетные данные клиента Oauth AccessToken, где хранить этот токен и получить доступ снова - PullRequest
0 голосов
/ 20 апреля 2020

Я использую Spring Boot и использую сторонний API accessToken (передавая clientId и clientSecret).

public String getAccessToken(){
   return token;
} 

Теперь во всех моих службах для использования стороннего API мне обязательно нужен accessToken, поэтому в каждом классе Service я вызываю getAccessToken () для получения токена, а затем делая фактический вызов покоя.

Делая это выше, это работает. НО как-то я чувствую себя как дублирующий код ie., getAccessToken() везде во всех классах обслуживания. Каков наилучший способ избежать дублирования? и самое главное, я никогда не должен получать inValid accessToken ни в одном из моих классов обслуживания

1 Ответ

1 голос
/ 20 апреля 2020

при использовании стороннего API, должен быть общий код.

Если вы используете RestTemplate

, добавьте ClientHttpRequestInterceptor

 RestTemplate template = new RestTemplateBuilder()
                .additionalInterceptors((httpRequest, bytes, clientHttpRequestExecution) -> {
                    httpRequest.getHeaders().add("Authorization", getAccessToken());
                    return clientHttpRequestExecution.execute(httpRequest, bytes);
                })
                .build();

а затем

@Autowired
private RestTemplate restTemplate;

public yourResp yourFunc(String param){
  ... = restTemplate.getFor...

}

...