Ruby on Rails & Twitter4R でのOAuth認証処理とツイートの基本

四苦八苦して、ようやく認証処理とツイートまでたどり着いた。

[ruby]
#coding: utf-8

require ‘twitter’
require ‘oauth’

class OauthController < ApplicationController

#—————————
# Twitter認証画面遷移
#—————————
def connect
#リクエストトークン取得
consumer = OAuth::Consumer.new("コンシューマキー", "コンシューマシークレット", :site => "http://twitter.com")
request_token = consumer.get_request_token(:oauth_callback => "http://コールバックURL/oauth/callback")

#リクエストトークンをセッションに格納
session[:request_token] = request_token

#Twitter認証画面へリダイレクト
authorized_url = request_token.authorize_url
redirect_to authorized_url

end

#————————–
# Twitter コールバック処理
#————————–
def callback
#リクエストトークン取得
request_token = session[:request_token]

#HTTPパラメータ取得
oauth_verifier = params[:oauth_verifier]

#アクセストークン取得
access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)

#トークンとトークンシークレット取得
token = access_token.token
token_secret = access_token.secret

#アクセストークンをセッションに格納
session[:access_token] = access_token

#Twitter投稿処理
twitter = Twitter::Client.new(:oauth_access => { :key => token, :secret => token_secret})
twitter.status(:post, "Twitter4R からのTweet。成功するかな?")
end

end
[/ruby]

コツは、OAuth認証の仕組み。コンシューマキーとコンシューマシークレット。リクエストトークンやアクセストークンの概念と役割をしっかりと理解すること。

一番ハマッたのは、Twitter開発者のアプリ管理画面で、CallBack URL を設定しているのに、PINコードの画面に遷移してしまう現象。
consumer.get_request_token のところで、callback_url を設定しなければならない。なぜだかは不明。OAuth認証の仕様なのか、Ruby for OAuthの不備なのか?

リクエストトークンからアクセストークンを取得する部分や、Twitter::Client.new の方法。ドキュメントが少ない・・・。

This entry was posted in Ruby, twitter, 技術情報. Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です