ha's notepad II

メモ書きです。

RubyでTwitterにポスト(その2・解決)

前回どうもうまく行かなかったRuby Twitter gemだが、Ubuntuで最新版(v5.7.1)をインストールしてみたら、何故かうまくツイートできるようになった。
gemのバージョンアップによって、若干認証の書式が変わっていたりする。

まずはdev.twitter.comの"My application"から作ったアプリを開き、「API Keys」タブでAPI keyとAPI secretの文字列を表示させる。そして、実際につぶやくアカウントの認証を行う。認証には、
Ruby OAuth GEMを使うので、必要ならインストール。


このステップは、アプリの開発者とつぶやくアカウントが同じ場合、省略できる(API keyとAPI secretの下の方にあるAccess toke nとAccess secretをそのまま読む)。

require 'rubygems'
require 'oauth'

@consumer=OAuth::Consumer.new( "API key","API secret", {
    :site=>"https://api.twitter.com"
    })
@request_token=@consumer.get_request_token
@request_token.authorize_url

"API key"と"API secret"のところに、先の画面に表示された文字列を入れて(引用符を忘れない!)このコードを実行すると、アカウント認証のためのURLが出てくるので、ブラウザ等で開いて実際につぶやきたいアカウントで認証を行う。すると、数字の列(PIN)が表示されるので、これをメモ。続いて以下のコードを実行する。「●PIN●」の位置には先ほどのPINを、こんどは引用符無しで入れる。

@access_token = @request_token.get_access_token(:oauth_verifier => ●PIN●)
puts @access_token.token
puts @access_token.secret

最初の文字列が「Access token」で、2番めが「Access token secret」になる。この文字列があれば、Rubyでつぶやくことが可能だ。

ここまでが、いわば認証のための準備。次は、いよいよ認証をして実際につぶやいてみる。この最初の認証の部分が、Twitter gemのバージョンアップに伴い若干変更されたので要注意。

require 'rubygems'
require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "API key"
  config.consumer_secret     = "API secret"
  config.access_token        = "Access token"
  config.access_token_secret = "Access token secret"
end

client.update("rubytest")

やはり引用符を忘れないように注意。
上手く行けば、認証を行ったアカウントで、「rubytest」とツイートされているはずだ。

実際につぶやく際のメソッドは、このサイトが参考になりそう。
http://route477.net/w/RubyTwitterJa.html