twitter-auth という Rails プラグインを使うと簡単に Twitter を使った認証が行えるようになります。
http://github.com/mbleigh/twitter-auth
ですが、普通に使おうとすると request_token を取得するところで 以下のようなエラーが出てしまいました。
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed): ...
サーバー証明書がないためにエラーになっているようなのですが、調べてみたところ twitter-auth には証明書を指定する方法が用意されていませんでした。
なので github で fork して証明書を指定できるようにしてこの問題を回避することにしました。
http://github.com/jugyo/twitter-auth
インストール
./script/plugin install git://github.com/jugyo/twitter-auth.git
使い方
generator が用意されていて、以下を実行すると必要なファイルを作ってくれます。
script/generate twitter_auth
migration も作られるので必要に応じてスキーマを編集して rake db:migrate してください。
証明書ファイルの取得
以下のページを参考に、 Twitter の CA 証明書ファイルを取得し、適当な場所に保存します。
http://d.hatena.ne.jp/vividcode/20091031/1256967931
コンシューマーキーとシークレットキーの取得
以下のページからアプリケーションを登録し、コンシューマーキーとシークレットキーを取得してください。
設定
config/twitter_auth.yml を編集します。
development: strategy: oauth oauth_consumer_key: "コンシューマーキー" oauth_consumer_secret: "シークレットキー" base_url: "https://twitter.com" authorize_path: "/oauth/authenticate" api_timeout: 10 remember_for: 14 # days oauth_callback: "http://localhost:3000/oauth_callback" ca_file: "証明書ファイルのパス" ...
確認
./script/server でアプリケーションを起動し http://localhost:3000/session/new にアクセスすると、リダイレクトされて以下のようなページが表示されると思います。

承認を求めているアプリケーションの名前が正しいことを確認し「Allow」ボタンを押してください。
リダイレクトされて http://localhost:3000/ に帰ってきたら成功です。
おめでとうございます。




