twitter OAuthのアクセストークンを取得

参考:http://weblog.nabetama.com/post/29954082449/ruby-twitter-bot-oauth
残念ながら参考サイトのsite指定が古くなってますorz
(既にTwitter Application Managementでアプリケーション登録してCONSUMER_KEYとCONSUMER_SECRETを取得済みであることが前提です)

#! /usr/bin/env ruby
# coding: utf-8
require 'oauth'

puts "Please input consumer_key: "
consumer_key = gets.chomp
puts "Please input consumer_secret: "
consumer_secret = gets.chomp

oauth = OAuth::Consumer.new(
  consumer_key, 
  consumer_secret, 
  site: 'https://api.twitter.com'
)
 
request_token = oauth.get_request_token
 
puts "Please access this URL: \n#{request_token.authorize_url}"
print "Enter your PIN code: "
pin = gets.chomp
 
access_token = request_token.get_access_token(oauth_verifier: pin)

puts
puts "client = Twitter::REST::Client.new("
puts "  consumer_key:        '#{consumer_key}'," 
puts "  consumer_secret:     '#{consumer_secret}'," 
puts "  access_token:        '#{access_token.token}',"
puts "  access_token_secret: '#{access_token.secret}',"
puts ")"
puts
puts "client = Twitter::REST::Client.new{ |config|"
puts "  config.consumer_key        = '#{consumer_key}'"
puts "  config.consumer_secret     = '#{consumer_secret}'"
puts "  config.access_token        = '#{access_token.token}'"
puts "  config.access_token_secret = '#{access_token.secret}'"
puts "}"

('14/7/24訂正:PINコード入力受付部分をpin = gets.to_iからpin = gets.chompへ変更
 thanks to [twitter:@beec1e] Twitter / beec1e: http://t.co/pOgqhLISEO ...

使い方

上記のスクリプトをtakeoauth.rb などの名前で保存します。
もちろんoauth gemは必要です。

スクリプトによる表示を黒字で示します。
赤字で示したCONSUMER_KEYとCONSUMER_SECRETを入力します。(もちろん下のものはニセモノです)

$ ruby takeoauth.rb 
Please input consumer_key: 
9Gu1FiE1IfKi32bR8Fw
Please input consumer_secret: 
QUnRDVcl5FNCZ9C1j80OAjUJlguMNVyqbdrOrnjtQ
Please access this URL: 
https://api.twitter.com//oauth/authorize?oauth_token=0KawAuAlRdSxOaMD4hbU8uZgTdgCv6W15EJIKeF8

このapiリンクをブラウザへ貼り付けてアクセスします。
そしてこのアプリを使うよう許可します。
すると7桁の数字が表示されますので、次のところで入力します。

Enter your PIN code: 4932962

すると最終的なtokenやtoken secretなどが表示されます。
ときどきスクリプトがエラーを吐いてしまいますが、その場合は諦めずにやり直して下さい。
何度行っても同じtoken/token secretが生成されますのでご安心下さい。

同じTwitter::REST::Clientオブジェクトを二種類の形式で表示しています。
お好みに合わせていずれかを使用してください。
なおTwitter gemバージョン5以上の形式です。4以下の場合にはTwitter::REST::Clientの部分をTwitter::Clientにしてください。

Twitter::REST::Client.new(
  consumer_key:        '9Gu1FiE1IfKi32bR8Fw',
  consumer_secret:     'QUnRDVcl5FNCZ9C1j80OAjUJlguMNVyqbdrOrnjtQ',
  access_token:        '2194235326-sm2SUkVRHMJ1CdwYG1f04klQMlxc4i05tkSbnZa',
  access_token_secret: 'oairK8FMvLZ8dqEVrCgh2brhyL0SCd5wpdkIoNxz62Jdi',
)

Twitter::REST::Client.new{ |config|
  config.consumer_key        = '9Gu1FiE1IfKi32bR8Fw'
  config.consumer_secret     = 'QUnRDVcl5FNCZ9C1j80OAjUJlguMNVyqbdrOrnjtQ'
  config.access_token        = '2194235326-sm2SUkVRHMJ1CdwYG1f04klQMlxc4i05tkSbnZa'
  config.access_token_secret = 'oairK8FMvLZ8dqEVrCgh2brhyL0SCd5wpdkIoNxz62Jdi'
}