April 7, 2009

ruby で OAuth を使ってみる実験

ruby で OAuth を使ってみる実験です。

twitter にアプリケーションを登録

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

registration

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

registration2

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

registration3

この「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 にアクセスすると以下のような画面が出てくると思います。

registration4

深く考えずに「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!!')

No Comments »

TrackBack URI

Leave a comment

※上の項目は入力してもしなくてもよいです。