PostHeaderIcon Rubyを使ってtwitter投稿してみた

Rubyを使って、twitterのbotさんを作りたいなと思い立ち、上記タイトルに挑戦してみました。

ソースコードは簡単なようなので、すぐにできるかなと思いきや、意外と落とし穴が。

 

環境は、前回に引き続き Windows 7 (64bit)です(Rubyのインストールは32bit版)。

 

まず、Ruby Twitter Gemというライブラリをインストールします。

Ruby にはデフォルトで gemコマンドが入っているので、下記のコマンドでOKです。

gem install rubygems-update

gem install twitter

上記コマンドはここらへん([1] http://yorozu123.seesaa.net/article/147918925.html)を参考にしました。

 

私の環境では、一行目のコマンドを実行したとたんにエラーがたくさん出てきました。

どんなエラーだったか忘れてしまったのですが、Rubyをいったんアンインストールして、下記のワンクリックRubyインストーラーを使ってインストールし直したら解決しました。

http://rubyinstaller.org/

 

あとは、下記のコードをプログラミングして実行するだけ。


require 'rubygems'
require 'twitter'

YOUR_CONSUMER_KEY = "<consumer_key>"
YOUR_CONSUMER_SECRET = "<consumer_secret>"
YOUR_OAUTH_TOKEN = "<oauth_token>"
YOUR_OAUTH_TOKEN_SECRET = "<oauth_token_secret>"

Twitter.configure do |config|
 config.consumer_key = YOUR_CONSUMER_KEY
 config.consumer_secret = YOUR_CONSUMER_SECRET
 config.oauth_token = YOUR_OAUTH_TOKEN
 config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

# Initialize your Twitter client
client = Twitter::Client.new

client.update("Rubyからこんにちわー")

コードはこのサイト([2] http://d.hatena.ne.jp/yoshidaa/20110112/1294846937)を参考にしました。

 

最初は[1]のサイトのコードで実行したのですが、次のようなエラーが出て困りました。

twitter_test.rb:8:in `<main>’: uninitialized constant Twitter::HTTPAuth (NameError)

[2]のサイトに書かれているように、APIが古かったようです。(ここも参考になりますね [7] http://sferik.github.com/twitter/

 

あと、コード内のconsumer_key等ですが、TwitterのDeveloperサイト([3] https://dev.twitter.com/)から取得してください。

取得方法は次のサイト([4] http://support.dreamone.co.jp/Pandora/dp.do?jumpTo=DreamX&variables(LPID)=162)を参考にするといいでしょう。

 

ちなみにツイートをPOSTするときには、Application Type を Read and Write にしなければなりません。

次のQ&Aが参考になりました([5] https://dev.twitter.com/discussions/12216)。

 

これも気づきにくいのですが、変更後はKeyを再発行しなければなりません。ご注意ください。

でないとこんなエラーが出ます。

Error processing your OAuth request: Read-only appllication cannot POST (Twitter::Error::Unauthorized)

 

自分のアカウントに”Rubyからこんにちはー”が表示されたら成功です。

今日はこのへんで。

 

P.S.

GMailのアカウントを使って、twitterのアカウントを大量に作ることができるそうで。参考までに([6] http://www.lifehacker.jp/2009/08/twittergmail.html)。

 

Leave a Reply