アインシュタインの電話番号
2011.01.26
RubyでTwitterのOAuth認証に必要なトークンを取得する

Twitter関連のWebアプリを作る際に、OAuth認証で必要になるトークンを取得する手順の備忘録。最近Rubyライブラリ側の仕様変更があったみたいで結構ハマった。

Twitter側での準備

Twitterのアプリ登録申請のページから、新規アプリを登録する。必須項目は以下の5つ。

||| |-|-| |アプリケーション名|GAE Hello world| |アプリケーションの説明|GAE Hello world| |アプリケーションのウェブサイトURL|http://gae-hello-world.appspot.com/| |アプリケーションの種類|ブラウザアプリケーション| |標準のアクセスタイプ|Read & Write|

定期的につぶやくTwitterBotを作る前提で、このような設定にしてみた。でアプリを作成すると、Consumer keyConsumer secretが表示されるのでメモる。

Ruby側での準備

OAuth認証を行うoauthライブラリと、TwitterでのOAuth認証に必要なトークンを簡単に取得できるようにしてくれるget-twitter-oauth-tokenライブラリをインストールする。

$ gem install oauth get-twitter-oauth-token

これでget-twitter-oauth-tokenコマンドが使用可能になる。

TwitterのOAuth認証に必要なトークンを取得

$ get-twitter-oauth-token

ターミナルから上記コマンドを実行するとConsumer keyConsumer secretを聞かれるのでコピペする。するとブラウザが開いて、Twitterのページが表示され、アプリを許可しますか?と聞かれるので許可すると、暗証番号が表示される。

ターミナル側ではその暗証番号の入力待ち状態(PIN:)になっているのでコピペする。すると、TwitterのOAuth認証に必要なTokenSecretが表示されるのでメモる。

RubyからTwitterにツイート

$ gem install twitter

twitterライブラリをインストールして、さきほどメモった4つのキーをそれぞれ該当する箇所に挿入した上で、下記のコードを実行するとツイートされるはず。

require 'rubygems'
require 'twitter'
Twitter.configure do |config|
  config.consumer_key = "Consumer key"
  config.consumer_secret = "Consumer secret"
  config.oauth_token = "Token"
  config.oauth_token_secret = "Secret"
end
Twitter.update("Hello world")

ハマったところ

Twitter::OAuthというtwitterライブラリ内蔵のOAuth部分は最近のバージョンでは削除されたらしく、ネットの情報を参考にしていた時それを使っているコードは動かなかった。OAuthはoauthライブラリですべて処理して、必要なキーをすべて揃えた上で、twitterライブラリでOAuth認証を行うという流れになったみたい? まだちょっとよくわかってない。


メールで Twitter、OAuth - Rubyとか Illustratorとか SFとか折紙とか