【发布时间】:2020-02-17 03:03:44
【问题描述】:
我正在使用 Spring Boot Cloud OAuth 客户端连接 Salesforce restapi。但是我收到Session expired or invalid 错误。无论如何刷新令牌我假设Spring Boot会在后台自动处理这个问题,但似乎情况并非如此。这是相关代码。
@Configuration
public class SalesforceConfiguration {
@Value("${salesforce.tokenUrl}")
private String tokenUrl;
@Value("${salesforce.clientId}")
private String clientId;
@Value("${salesforce.clientSecret}")
private String clientSecret;
@Value("${salesforce.username}")
private String username;
@Value("${salesforce.password}")
private String password;
@Bean
protected OAuth2ProtectedResourceDetails resource() {
ResourceOwnerPasswordResourceDetails resource = new ResourceOwnerPasswordResourceDetails();
resource.setAccessTokenUri(tokenUrl);
resource.setClientId(clientId);
resource.setClientSecret(clientSecret);
resource.setClientAuthenticationScheme(AuthenticationScheme.form);
resource.setUsername(username);
resource.setPassword(password);
return resource;
}
@Bean
public OAuth2RestOperations restTemplate() {
OAuth2RestTemplate operations = new OAuth2RestTemplate(resource(), new DefaultOAuth2ClientContext(new DefaultAccessTokenRequest()));
operations.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
operations.getMessageConverters().add(new StringHttpMessageConverter());
return operations;
}
}
这就是我在服务中使用它的方式。
@Component
public class QueryExecutor extends AbstractExecutor implements SalesforceExecutor {
private OAuth2RestOperations restOperations;
public QueryExecutor(OAuth2RestOperations restOperations) {
this.restOperations = restOperations;
}
@Override
public Response process(Request request) throws Exception {
JsonNode jsonNode = restOperations.getForObject(buildUrl(request), JsonNode.class);
return new Response<>(ResponseCode.SUCCESS_GET.getCode(), jsonNode, request.getResponseHandler());
}
private String buildUrl(Request request) {
return new StringBuilder().append(getServiceUrl(restOperations))
.append("/services/data/v41.0/query/?q=")
.append(request.getPayload().get("query"))
.toString();
}
}
如果我收到会话过期错误,是否可以使用这种方法无缝刷新令牌?
【问题讨论】:
标签: spring-boot salesforce spring-cloud spring-security-oauth2 spring-oauth2