平凡なエンジニアの独り言 はてなブログ出張所

ピアノをこよなく愛するエセRubyistが適当に書き綴ります

twitterのOAuth認証を実装するときに、AccessTokenからscreen_nameを取得する方法

RmakeRailsで実装)でtwitterのOAuth認証を実装していたときに、screen_nameの取得方法がわからなくてあたふたしたので自分用にメモっておきます。gemのoauthとtwitterを使いました。具体的には以下の一行が書きたかっただけなのですが。。。

screen_name = access_token.params[:screen_name]

environment.rbに以下のように書いて、gemのoauthとtwitterを設定します。

config.gem 'oauth'
config.gem 'twitter'

次に、RequestTokenを取得してから、twitterの認証ページを飛ばすためのアクションを書きます。

consumer = OAuth::Consumer.new(CONSUMER_KEY, SECRET_KEY,
  {:site=>"http://twitter.com"})
request_token = consumer.get_request_token(:oauth_callback => "戻り先のURL")
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect_to request_token.authorize_url

最後に、twitterの認証ページからの遷移先アクションを記述します。

consumer = OAuth::Consumer.new(CONSUMER_KEY, SECRET_KEY,
  {:site=>"http://twitter.com"})

request_token = OAuth::RequestToken.new(
  consumer, session[:request_token], session[:request_token_secret])

access_token = request_token.get_access_token(
  :oauth_token => params[:oauth_token],
  :oauth_verifier => params[:oauth_verifier]
)

_screen_name = access_token.params[:screen_name] # <<- これが書きたかった。。。

oauth = Twitter::OAuth.new(CONSUMER_KEY, SECRET_KEY)
oauth.authorize_from_access(access_token.token, access_token.secret)
client = Twitter::Base.new(oauth)

screen_nameはAccessToken(Twitter APIへのアクセス用のトークン)のレスポンスに含まれているようです。OAuthでは、AccessTokenに独自のパラメータを含めることができるんですかね?

ちゃんと仕様を読まないとダメかな〜。。。