at posts/single.html

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*

で検索しても、どこにもこのクラス(定数?)が定義されてない。 ということで、ここで断念。

誰か動かすのに成功した人はいるんだろうか…。

関連する日記