Twitter関連のWebアプリを作る際に、OAuth認証で必要になるトークンを取得する手順の備忘録。最近Rubyライブラリ側の仕様変更があったみたいで結構ハマった。
Twitter側での準備
Twitterのアプリ登録申請のページから、新規アプリを登録する。必須項目は以下の5つ。
アプリケーション名 | GAE Hello world |
アプリケーションの説明 | GAE Hello world |
アプリケーションのウェブサイトURL | http://gae-hello-world.appspot.com/ |
アプリケーションの種類 | ブラウザアプリケーション |
標準のアクセスタイプ | Read & Write |
定期的につぶやくTwitterBotを作る前提で、このような設定にしてみた。でアプリを作成すると、Consumer keyとConsumer 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 keyとConsumer secretを聞かれるのでコピペする。するとブラウザが開いて、Twitterのページが表示され、アプリを許可しますか?と聞かれるので許可すると、暗証番号が表示される。
ターミナル側ではその暗証番号の入力待ち状態(PIN:)になっているのでコピペする。すると、TwitterのOAuth認証に必要なTokenとSecretが表示されるのでメモる。
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認証を行うという流れになったみたい? まだちょっとよくわかってない。