OAuth gem未签署请求

我正在使用rubuth gem for OAuth(http://oauth.rubyforge.org/),我无法让它为我试图点击的提供者创建授权头。

这是我的代码:

consumer = OAuth::Consumer.new(auth[:consumer_key], auth[:consumer_secret], { :site => 'http://api.rdio.com', :scheme => :header }) access_token = OAuth::AccessToken.new(consumer) ap access_token.post('/1', :method => 'search', :query => 'Robert', :types => 'User') 

发生请求时,呼叫中不存在标头。

 # [ [0] "*/*" ], "user-agent" => [ [0] "Ruby" ], "content-length" => [ [0] "0" ], "content-type" => [ [0] "application/x-www-form-urlencoded" ] }, 

我所指的标题是看起来像这样的标题:

 OAuth oauth_nonce=\"225579211881198842005988698334675835446\", oauth_signature_method=\"HMAC-SHA1\", oauth_token=\"token_411a7f\", oauth_timestamp=\"1199645624\", oauth_consumer_key=\"consumer_key_86cad9\", oauth_signature=\"1oO2izFav1GP4kEH2EskwXkCRFg%3D\", oauth_version=\"1.0\" 

看起来你正试图做两条腿的oauth。 看看这段代码是否适合你。

编辑:更新的代码示例

 gem 'oauth' require 'oauth' require 'net/http' consumer = OAuth::Consumer.new('ENTER_KEY', 'ENTER_SECRET', { :site => 'http://api.rdio.com', :scheme => :header }) resp = consumer.request(:post, '/1/search', nil, {}, 'method=search&query=Robert&types=User', { 'Content-Type' => 'application/x-www-form-urlencoded' }) puts resp.code + "\r\n" puts resp.body 

编辑:添加捕获的http流

 POST /1/search HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: */* User-Agent: OAuth gem v0.4.5 Content-Length: 37 Authorization: OAuth oauth_consumer_key="REDACTED_KEY", oauth_nonce="dwp8m2TGPHQNx3A7imLi7OkAULL7c0IWbTKefPXCsAY", oauth_signature="LxDZn6UNFLY%2FaXItu6MPK5a11js%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1330193449", oauth_version="1.0" Connection: close Host: api.rdio.com method=search&query=Robert&types=UserHTTP/1.1 200 OK X-Mashery-Responder: mashery-web1.LAX Content-Type: application/json Vary: Accept-Encoding Vary: Accept-Language, Cookie Content-Language: en Cache-Control: no-cache X-Version: 11.1 Accept-Ranges: bytes Date: Sat, 25 Feb 2012 18:10:50 GMT Server: Mashery Proxy Content-Length: 2763 Connection: close {"status": "ok", "result": {"person_count": 9603, "track_count": 93409, "number_results": 200, "playlist_count": 205, "results": ***TRUNCATED RESULTS FOR BREVITY***