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