ruby で OAuth を使ってみる実験です。
twitter にアプリケーションを登録
まず twitter に自分の作ったアプリケーションを登録します。
自分のアプリケーションが無い場合でも適当なのでいけるんじゃないんでしょうか。
設定画面(Settings)の以下のリンク(丸で囲んだところ)からアプリケーションの登録画面に辿り着けるはずです。

登録画面はこんな感じです。

登録すると以下のような画面が見れて、「Consumer key」と「Consumer secret」というのが発行されているのがわかります。

この「Consumer key」と「Consumer secret」を使って認証処理を行います。
oauth をインストール
oauth ライブラリを gem でインストールします。
sudo gem install oauth
irb で実験
irb で実験してみます。
% irb
まず、irb 上で以下を実行してください。
require 'rubygems'
require 'oauth'
consumer = OAuth::Consumer.new(
"< Consumer key >",
"< Consumer secret >",
:site => "http://twitter.com"
)
request_token = consumer.get_request_token
puts request_token.authorize_url
処理に少し時間がかかるかもしれませんが、最後に URL が出力されるはずです。
この irb はまた後で使うので、終了せずにそのまま置いといてください。
出力された URL にアクセスすると以下のような画面が出てくると思います。

深く考えずに「Allow」をクリックしましょう。
その後、irb に戻り、以下を実行してください。
access_token = request_token.get_access_token
以上で twitter.com での OAuth による認証は完了です。
内部的には「Consumer key」と「Access token」の交換みたいなことが行われています。
取得した「Access token」の情報(token と token_secret の二つ)をアプリケーション側で保持しておけばいつでも認証を通してのアクセスができます。
試しに twitter に何かメッセージをポストしてみましょう。
以下を実行してみてください。
access_token.post('/statuses/update.json', :status => 'test for oauth')
うまく行きましたか?
http://twitter.com/ にアクセスしてみて、ちゃんとメッセージが投稿されていれば実験成功です。
rubytter の OAuth 対応の話
ちなみに、rubytter の OAuth 対応を昨日行いました。
上記で取得した「access_token」を OAuthRubytter というクラスに渡して new すると Rubytter と同じインターフェイスで OAuth な rubytter が楽しめます。
例:
r = OAuthRubytter.new(access_token)
r.update('Hello OAuth!!')
