OAuth認証+JavaからTwitterにポスト その1

何回かに分けて書きます。


Twitterにお手製のプログラムから投稿する際には認証が必要です。
この認証の形式、TwitterではBasic認証OAuth認証が選べます。
が、OAuthが推奨のようです。Basic認証はDepricatedな香り。


OAuth認証についてはネット上それなりに記事が見受けられますが、それを見た感想
「わっかんねえ。。。」
認証が何段階にも別れている上、登場人物が、User、Consumer、Service Providerという風に3人。
実際にプログラムを書いてみてやっと理解しました。



OAuthの仕様はこちら。
http://oauth.net/core/1.0/
仕組みは簡単にまとめると、こうです。

OAuth Authentication is done in three steps:

1. The Consumer obtains an unauthorized Request Token.
2. The User authorizes the Request Token.
3. The Consumer exchanges the Request Token for an Access Token.

っていってもわかるわけねー。


登場人物

OAuthの登場人物は次の3人

  1. User
  2. Consumer
  3. Service Provider

Userは人間、Service Providerは今回の場合Twitter、Consumerは今から書き始めるJavaプログラム。
ConsumerはUserにパスワードを教えてもらうことなく、Service Providerから情報を取得できるのがOAuthの特徴です。


重要な単語

  1. Consumer Key
  2. Consumer Secret
  3. Request Token
  4. Access Token
  5. Token Secret

Consumer Key と Consumer Secret は Consumer用のIDとパスワード
Request Token は一時的に必要になる文字列です。これをConsumer(Javaプログラム)はService Provider(Twitter)にまず発行してもらいます。
発行されたTokenをUserに承認してもらうとConsumerはもう一度Service Providerにお願いしに行き、今度はAccess Tokenを貰います。
そのAccess Tokenと同時にもらうToken Secretを使って、ConsumerはService Providerから以後自由に情報を引き出すことができるようになるのです。


Twitterの場合

手順はこうなっています。

1. The application uses oauth/request_token to obtain a request token from twitter.com.
2. The application directs the user to oauth/authorize on twitter.com.
3. After obtaining approval from the user, a prompt on twitter.com will display a 7 digit PIN.
4. The user is instructed to copy this PIN and return to the appliction.
5. The application will prompt the user to enter the PIN from step 4.
6. The application uses the PIN as the value for the oauth_verifier parameter in a call to oauth/access_token which will verify the PIN and exchange a request_token for an access_token.
7. Twitter will return an access_token for the application to generate subsequent OAuth signatures.

やはり実際やってみないことには「は?」って感じなのでこれを次回以降順番にやっていきます。
前もって言っておくとものすごくめんどくさいです。
特にrequest tokenを取得するまでが長いので心してかかりましょう。