(ruby)(OAuth認証で AccessToken と AccessSecret を取得するまで)(非Webページアプリケーション版)

 今回は OAuth認証をする スタンドアロン版のTwitterクライアントを作る場合の話で
AccessToken と AccessSecret を 取得するまでの rubyスクリプトになります

 まず http://twitter.com/apps で 自分用のアプリケーションを登録しておきます
今回は Web版ではないのでアプリケーションの種類は 「クライアントアプリケーション」を選びます
アプリケーションの登録が終わったら、 そのアプリケーションの詳細情報ページを開いて
Consumer key と Consumer secret を コピーする準備をしておきます

 それでは 具体的なスクリプトです
今回は
Ubuntu 10.04
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
の環境で作成してます
環境が違う場合は いくつか書き換えが必要な所があります
文字コードUTF-8 です

#!/usr/bin/ruby -Ku

require 'rubygems'
require 'oauth'

print('ConsumerKeyを入力してください >')
consumer_key = gets().chomp()  

print('ConsumerSecretを入力してください >')
consumer_secret = gets().chomp()

consumer = OAuth::Consumer.new(
	consumer_key, consumer_secret, {:site => '[]http://twitter.com[]'}
)

request_token = consumer.get_request_token
puts('ブラウザを起動して 認証ページを開きます')
fork(){
	system('firefox ' << request_token.authorize_url)
	exit(0)
}
sleep(3)
print('認証後に表示された数値を入力してください >')
oauth_verifier = gets().chomp()

access_token = request_token.get_access_token({:oauth_verifier => oauth_verifier})

buf = consumer_key << "\n" << consumer_secret << "\n" <<
	access_token.token << "\n" << access_token.secret

(f = open('OAuthKeys.txt', 'w')).print(buf)
f.close

 このスクリプトを 端末 で 実行すると
まず「Consumer key」と「Consumer secret」を聞いてきますので
アプリケーションの詳細ページから コピペします
続いて ブラウザが起動して OAuthの認証ページが開きます
「このアプリケーションを利用したいアカウント」でログオンし 認証をすると
数桁の数字が表示されますので 端末の方にその値を コピペします

 そうすると カレントフォルダに OAuthKeys.txt という
「ConsumerKey」と「ConsumerSecret」と「AccessToken」と「AccessSecret」の値を記録した
テキストファイルが出来上がります
実際に Twitterにアクセスする時には この4つの値が必要になります
これらの値は 基本的には 他のユーザにバレてはいけないものなので ご注意下さい

 いろいろと要素が多くて こんがらがってしまいますが
一番のポイントは このアプリケーションに対して
ユーザが 一切 ログイン用のパスワード を入力していないということですね
もちろん 上の4つの数値がばれてしまうと なお 成りすましの危険性があるようにも思うんですけどね
そこら辺はどうなんでしょうかね
いろいろ取り扱いが難しいようですし、これから研究してみようと思います