参考: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' }