我有一个关于Spring的项目,在这个项目中我需要通过Twitter实现授权。
还有什么更简单的吗?-我问自己,然后我被困了几天。
问题是,我尝试过的大多数库(侦听/connect/twitter或/signin/twitter)都返回相同的响应
Invalid cookie header: "set-cookie: personalization_id=""; Expires=Tue, 28 Jul 2020 20:04:39 GMT; Path=/; Domain=.twitter.com". Invalid 'expires' attribute: Tue, 28 Jul 2020 20:04:39 GMT这句话引起我的注意:
Invalid 'expires' attribute这可以通过配置RestTemplate来解决,但问题是它是在配置中深深创建的,并且由私有的最终字段隐藏。我认为应该存在一个比使用反射API更好的决定,我只是不认为
也许有人能够通过Twitter提出正确的授权方式。
测试版本:
P.S. Facebook非常适合使用spring-security-oauth2-jose和spring-security-oauth2-client,但是twitter并没有被配置为其中的提供者。
必须为客户端注册指定提供者ID“twitter”
发布于 2018-07-29 21:18:30
这听起来像是需要配置RestTemplate以使用标准cookie规范。这可以通过在cookieSpec上设置RequestConfig.Builder,然后通过HttpComponentsClientHttpRequestFactory来最终创建RestTemplate来实现。有些东西就像:
@Bean
public RestTemplate restTemplate() {
RequestConfig requestConfig = RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.mergeRequestConfig(requestConfig);
return new RestTemplate(factory);
}对不起,目前我没有IDE/javac可用,因此可能无法编译。
发布于 2019-08-28 13:23:44
使用这个配置您的RestTemplate Bean以使用标准cookie规范
@Bean
public RestTemplate restTemplate() {
return new RestTemplate(getClientHttpRequestFactory());
}
private HttpComponentsClientHttpRequestFactory getClientHttpRequestFactory() {
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
clientHttpRequestFactory.setHttpClient(getHttpClient());
return clientHttpRequestFactory;
}
private HttpClient getHttpClient() {
return HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD).build())
.build();
}https://stackoverflow.com/questions/51584382
复制相似问题