Ruby で OAuth を使ってみた(失敗)
2007-11-01
今日は天気もいいし、 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*
で検索しても、どこにもこのクラス(定数?)が定義されてない。 ということで、ここで断念。
誰か動かすのに成功した人はいるんだろうか…。