0

私は、Twitter を介して承認を実装する必要がある Spring Boot のプロジェクトを持っています。

もっと簡単なことは何ですか?-私は自問しましたが、数日間立ち往生しました。

問題は、私が試したほとんどのライブラリ (/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 を通じて正しい認証方法を提案できるでしょう。

テスト済みのバージョン:

  • 1.5.14 から 2.0.3 までの Spring Boot バージョン
  • org.springframework.social:spring-social-twitter 1.1.2 から 2.0.0.M4
  • spring-boot-starter-social-twitter 2.0.0.M4 まで

PS Facebook は spring-security-oauth2-jose および spring-security-oauth2-client と完全に連携していましたが、twitter はプロバイダーとして構成されていません。

クライアント登録 'twitter' にはプロバイダー ID を指定する必要があります

4

2 に答える 2

0

これを使用して、標準の Cookie 仕様を使用するように RestTemplate Bean を構成します

@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();
}
于 2019-08-28T13:23:44.303 に答える