Log.log(work)

いろんな作業メモ

Ruby でOAuth認証のあれこれ with Twitter

環境:Windows7(64), ruby2.0

前回の続きでOAuth認証してみた


色々サイトと見たんだが、dev.twitter.comのUIが変わったらしく、
今作業している画面とちょっと違っていたり、項目名が変わっていてよく分からなかったのでメモ。

まず最初に

https://dev.twitter.com/
ログイン後、右上のアイコンをクリックすると
・My subscriptions
・My applications
・Sign out

の3つがあるが真ん中の
・My applications
をクリック。

アプリ登録

Create New App というボタンがあるのでぽちっとな。
それからいろんな入力項目が出てくるがここは適当(後で変更できる)。
サイト、面倒だったから自分のtwitterのURLにしてしまったぜ。

アプリ登録準備

登録後にアプリのリンクをクリックすると、
・Details(activeのタブ)
・Settings
API Keys
・Permissions

のタブがあるページが開く。

ここで一旦
Permissions
のタブをクリックして
Permissionを Read から Read and Write に変更しておく。

認証開始

API Keysのタブを開くをAPI keyとAPI secretに文字列があるのが見える。
サイトみたらConsumer Keyがどうたらってあったけど、どこにもないじゃん。。。って思ってたら
このAPI key が Consumer Keyのことなんですって。
うーん。

ここで発行するために irb でやろうとしたらNet::HTTPRetriableErrorが出てうまく行かない。HTTP ステータスコード 3xx って何をどうしたらいいのかちょっと分からず調べていたら、URLの指定先が間違っていたもよう。
× :site => "http://twitter.com"
○ :site=>"https://api.twitter.com"

twitterのdevelperサイトと書いてあるブログもあったので何が正しいか分からんかった。
とりあえずいろいろ試したらうまくいった。

key発行:

require 'oauth'
require 'oauth/consumer'

@consumer=OAuth::Consumer.new( 'CONSUMER_KEY','CONSUMER_SECRET', {
    :site=>"https://api.twitter.com"
    })

PIN発行


ここで

@request_token=@consumer.get_request_token
@request_token.authorize_url

とたたく。

するとURLが出てくる。

[7] pry(main)> @request_token.authorize_url
=> "https://api.twitter.com/oauth/authorize?oauth_token=hogehogehogehoge"

これをブラウザに張り付けてたたくと、今作ったbotが認証を求めている、と言われるのでOKを押下するとPINが発行される。

この数値をメモ。

access_token GET

PINを下記のコードに張り付けるとaccess_token が表示される。
これでOK。

@access_token = @request_token.get_access_token(:oauth_verifier => 'PINの番号')
puts @access_token.token
puts @access_token.secret