Ruby で OAuth を使ってみた(失敗)
今日は天気もいいし、 Twitter が OAuth に対応したので Ruby でサンプルを作ろうとした。 結果は失敗。途中結果だけ残しておく。
ライブラリの取得
OAuth: Codeから取得した。
$ svn co http://oauth.googlecode.com/svn/code/ruby/
gem のソースっぽいディレクトリ構成だけど、よく分からなかったので setup.rb を動かす。
$ cd oauth/lib/ $ ruby setup.rb $ ruby setup.rb install
irb から呼び出してみる。
$ irb irb(main):001:0> require 'oauth' => true irb(main):002:0> require 'oauth_request' SyntaxError: /home/machu/lib/ruby/site_ruby/1.8/oauth_request.rb:6: syntax error, unexpected tASSOC, expecting '=' def initialize(consumer, token, request, realm = '', signature_method => 'HMAC-SHA1', nonce = nil, timestamp = nil)
いきなりSyntaxError。 oauth_request.rb のソースを以下のように修正。
$ diff -u oauth_request.rb.org oauth_request.rb --- oauth_request.rb.org Thu Nov 1 17:07:23 2007 +++ oauth_request.rb Thu Nov 1 17:07:29 2007 @@ -3,7 +3,7 @@ attr_accessor :consumer, :token, :request, :realm, :signature_method, :nonce, :timestamp attr_reader :parameters_for_signature - def initialize(consumer, token, request, realm = '', signature_method => 'HMAC-SHA1', nonce = nil, timestamp = nil) + def initialize(consumer, token, request, realm = '', signature_method = 'HMAC-SHA1', nonce = nil, timestamp = nil) @consumer = consumer @token ||= OAuth::Token.new('', '') @request = OAuth::RequestProxy.proxy(request)
再度、irbから起動。
irb(main):003:0> require 'oauth_request' => true irb(main):004:0> require 'oauth_token' => true ArgumentError: wrong number of arguments (0 for 3) from (irb):7:in `initialize' from (irb):7:in `new' from (irb):7 from :0 irb(main):008:0> OAuth::Request.new(nil, nil, nil) NameError: uninitialized constant OAuth::RequestProxy from /home/machu/lib/ruby/site_ruby/1.8/oauth_request.rb:9:in `initialize' from (irb):8:in `new' from (irb):8 from :0
OAuth::RequestProxyが無いよというエラーになった。
$ grep -r RequestProxy oauth*
で検索しても、どこにもこのクラス(定数?)が定義されてない。 ということで、ここで断念。
誰か動かすのに成功した人はいるんだろうか…。