首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Boot社会Twitter身份验证失败

Spring Boot社会Twitter身份验证失败
EN

Stack Overflow用户
提问于 2018-07-29 20:40:18
回答 2查看 953关注 0票数 0

我有一个关于Spring的项目,在这个项目中我需要通过Twitter实现授权。

还有什么更简单的吗?-我问自己,然后我被困了几天。

问题是,我尝试过的大多数库(侦听/connect/twitter或/signin/twitter)都返回相同的响应

代码语言:javascript
运行
复制
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

这句话引起我的注意:

代码语言:javascript
运行
复制
Invalid 'expires' attribute

这可以通过配置RestTemplate来解决,但问题是它是在配置中深深创建的,并且由私有的最终字段隐藏。我认为应该存在一个比使用反射API更好的决定,我只是不认为

也许有人能够通过Twitter提出正确的授权方式。

测试版本:

  • Spring版本从1.5.14到2.0.3
  • org.springframework.social:spring-social-twitter从1.1.2到2.0.0.M4
  • spring-boot-starter social-twitter高达2.0.0.M4

P.S. Facebook非常适合使用spring-security-oauth2-jose和spring-security-oauth2-client,但是twitter并没有被配置为其中的提供者。

必须为客户端注册指定提供者ID“twitter”

EN

回答 2

Stack Overflow用户

发布于 2018-07-29 21:18:30

这听起来像是需要配置RestTemplate以使用标准cookie规范。这可以通过在cookieSpec上设置RequestConfig.Builder,然后通过HttpComponentsClientHttpRequestFactory来最终创建RestTemplate来实现。有些东西就像:

代码语言:javascript
运行
复制
@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可用,因此可能无法编译。

票数 0
EN

Stack Overflow用户

发布于 2019-08-28 13:23:44

使用这个配置您的RestTemplate Bean以使用标准cookie规范

代码语言:javascript
运行
复制
@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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51584382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档