我正在使用Spring OAuth2RestTemplate,令牌过期后不会刷新。以下是我的令牌提供商。我想念什么?任何指针都将真正有帮助。
@Bean
public AccessTokenProvider clientAccessTokenProvider() {
ClientCredentialsAccessTokenProvider accessTokenProvider = new ClientCredentialsAccessTokenProvider();
accessTokenProvider.setRequestFactory(getClientHttpRequestFactory());
return accessTokenProvider;
}
答案 0 :(得分:0)
根据Spring Boot oAuth的实施,ClientCredentialsAccessTokenProvider不支持“刷新令牌”。
我通过检查到期时间并在进行其余调用之前将oAuthContext中的令牌设置为null来解决此问题。
private void checkTokenExpiry() {
OAuth2ClientContext oAuth2ClientContext = oAuth2RestOperations.getOAuth2ClientContext();
if (oAuth2ClientContext == null) {
return;
}
OAuth2AccessToken accessToken = oAuth2ClientContext.getAccessToken();
if (accessToken != null && (accessToken.getExpiresIn() > 5000 || accessToken
.isExpired())) { //5 seconds
log.info("Token expired");
oAuth2RestOperations.getOAuth2ClientContext()
.setAccessToken(null); //to re-fetch the token
}
}