スプリング ソーシャルを使用して、ステータスを更新し、写真をアップロードする Twitter アプリを開発したいと考えています。ユーザー。アプリ キー以外はハードコードしたくありません。
spring social を使用して Twitter Oauth を実行する方法を教えてください。Spring Framework の公式ドキュメントを調べましたが、他の例を見て混乱しました。
ありがとう
スプリング ソーシャルを使用して、ステータスを更新し、写真をアップロードする Twitter アプリを開発したいと考えています。ユーザー。アプリ キー以外はハードコードしたくありません。
spring social を使用して Twitter Oauth を実行する方法を教えてください。Spring Framework の公式ドキュメントを調べましたが、他の例を見て混乱しました。
ありがとう
「アプリ キー」別名ペアは、ユーザー認証consumer { key, secret }
を必要としない Twitter API の使用をアプリに許可します。ログインせずにアプリで Twitter の Web サイトをブラウジングしていると考えてください。したがって、検索、タイムラインの取得などを行うことができます。=> 読み取り専用。
何かを返信したい場合は、実際の Twitter アカウント / ユーザーに代わってアプリに投稿させる必要があります。誰かが Twitter クライアントを書いていると考えてみてください => 多くの異なるユーザーがダウンロードできるため、適切に機能するには次の 2 つが必要です:
consumer { key, secret }
ペアを持っているaccess { token, secret }
ペアを持っているそのアクセス { トークン、シークレット } ペアを取得するには、そのユーザー/アカウントから「OK」を得る必要があります。
そこで OAuth の出番です => ユーザーを確認ページに送り、そこで「OK、このアプリが自分に代わって投稿することを許可します」をクリックします。この「OK」はOAuthToken
、アプリで使用できる に変換されます。
自分自身に代わって更新を投稿することだけが必要な場合は、独自の Twitter アプリを承認し、それをアプリでOAuthToken
使用できるように保持する必要があります。
残念ながら TwitterはまだOAuth 2.0 をサポートしていません。
Spring Social のドキュメントでは、ここで OAuth 1.0a フローについて説明しており、フローを視覚的に確認できます。
Spring Social API を使用してこのフローを「コーディング」するには、最初にアクセス {token, value} ペアをリクエストする必要があります (そのための便利なConnectControllerがあります)。
TwitterConnectionFactory connectionFactory =
new TwitterConnectionFactory( "consumerKey", "consumerSecret" );
OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations();
OAuthToken requestToken = oauthOperations.fetchRequestToken( "https://my-callback-url", null );
String authorizeUrl = oauthOperations.buildAuthorizeUrl( requestToken, OAuth1Parameters.NONE );
response.sendRedirect( authorizeUrl );
そして、(コールバック URL に) 戻ってきたら、まさにそのペアである OAuthTokenOAuth1Operations
を取得するために使用できます。
// upon receiving the callback from the provider:
OAuthToken accessToken = oauthOperations.exchangeForAccessToken(
new AuthorizedRequestToken(requestToken, oauthVerifier), null);
必要なものがすべて揃ったので、次の選択肢があります。
OAuthToken
。String consumerKey = "..."; // The application's consumer key
String consumerSecret = "..."; // The application's consumer secret
String accessToken = accessToken.getValue();
String accessTokenSecret = accessToken.getSecret();
Twitter twitter = new TwitterTemplate( consumerKey, consumerSecret, accessToken, accessTokenSecret );
Connection<Twitter> connection = connectionFactory.createConnection( accessToken );
を取得したら、ここに示すようにConnection
永続化することをお勧めします。これにより、アクセス トークンを再度取得する必要がなくなります。ConnectionRepository
これが接続 APIです。
前の回答は良いですが、それは話の一部にすぎません...
Spring Social を操作できるレベルは少なくとも 3 つあります。(1) TwitterTemplate を直接使用する。この場合、独自の手段でアクセス トークンとシークレットを取得する必要があります。(2) OAuth1Template を使用します。おそらく前の回答が示したように TwitterConnectionFactory を介して、アクセス トークンを取得し、そこから TwitterTemplate を作成します。この場合、リダイレクトとコールバックを自分で処理するか、(3) Spring Social の ConnectController を使用してすべてを処理する必要があります。
ConnectController を使用すると、ユーザー側での OAuth 作業が最小限になります。Spring で適切な部分を構成するだけで、ConnectController が残りを処理します。詳細については、 http://static.springsource.org/spring-social/docs/1.0.x/reference/html/connecting.htmlを参照してください。
https://github.com/SpringSource/spring-social-samplesにある Spring Social Showcase のサンプルをご覧になることをお勧めします。ConnectController を使用して、Twitter および Facebook 接続で処理します。もちろん、Spring Social フォーラム ( http://forum.springsource.org/forumdisplay.php?82-Social ) で質問することもできます。