twitterのOAuth認証を実装するときに、AccessTokenからscreen_nameを取得する方法
Rmake(Railsで実装)で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に独自のパラメータを含めることができるんですかね?
ちゃんと仕様を読まないとダメかな〜。。。