2012年10月9日火曜日

twitterのbotを作る


そんなに難しくないと思った・・・

1.CONSUMER_KEYとCONSUMER_SECRETの取得
アプリの登録を行う
このページから飛んで適当に入力する

2.ユーザに許可してもらいアクセストークンをもらう
スクリプト実行⇒authページ⇒許可を押す⇒数値をメモ⇒スクリプトに入力

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

  OAUTH_CONSUMER_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXX'
  OAUTH_CONSUMER_SECRET='XXXXXXXXXXXXXXXXXXXXXXXX'

  consumer = OAuth::Consumer.new( OAUTH_CONSUMER_KEY , OAUTH_CONSUMER_SECRET , {
    :site=>"http://twitter.com"
  })
  #optprm = { :oauth_callback=>"(コールバック先のURL)" }
  request_token = consumer.get_request_token
  puts "Access this URL and approve => #{request_token.authorize_url}"

  print "Input OAuth Verifier: "
  oauth_verifier = gets.chomp.strip

  access_token = request_token.get_access_token(
      :oauth_verifier => oauth_verifier
  )

  puts "Access token: #{access_token.token}"
  puts "Access token secret: #{access_token.secret}"

3.後はもらったアクセストークン&コンシューマIDでスクリプトを書く
twitter のgemでもoauthのgemでも簡単なことをやる場合はあんま変わんない感じ

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

require 'oauth'
require 'json'

CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN = 'XXXX-XXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXXXXXXXXXXX'

# 下準備
consumer = OAuth::Consumer.new(
  CONSUMER_KEY,
  CONSUMER_SECRET,
  :site => 'http://twitter.com'
)
access_token = OAuth::AccessToken.new(
  consumer,
  ACCESS_TOKEN,
  ACCESS_TOKEN_SECRET
)

# タイムラインを取得して時系列順に表示
response = access_token.get('http://twitter.com/statuses/friends_timeline.json')
JSON.parse(response.body).reverse_each do |status|
  user = status['user']
  puts "#{user['name']}(#{user['screen_name']}): #{status['text']}"
end

# Tweetの投稿
#response = access_token.post(
#  'http://twitter.com/statuses/update.json',
#  'status'=> 'oauth test post2'
#)
  #!/usr/bin/env ruby
  # coding: utf-8
  require 'twitter'

  # ログイン
  Twitter.configure do |config|
    config.consumer_key       = 'XXXXXXXXXXXXXXXX'
    config.consumer_secret    = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    config.oauth_token        = 'XXXXXXX-XXXXXXXXX'
    config.oauth_token_secret = 'XXXXXXXXXXXXXXXXXX'
  end

  #発言する
  #puts Twitter.home_timeline.first.text
  Twitter.update('hoge')

参考リンク
http://d.hatena.ne.jp/shibason/20090802/1249204953
http://rdoc.info/gems/twitter
http://tech.sayama-yuki.net/archives/166

0 件のコメント: