0

我正在尝试使用 oauth ruby​​ gem 从 ruby​​ irb 向 2 腿 OAuth(1.0) 系统进行身份验证,如下所示,

步骤1:

require 'oauth'

irb(main):038:0> consumer = OAuth::Consumer.new("key", "secret", :site => "site", :scheme => :query_string)
I got a response for this as,


 => #<OAuth::Consumer:0xba14be2c @key="{got valid key here}", @secret="{got valid secret here}", @options={:signature_method=>"HMAC-SHA1", :request_token_path=>"/oauth/request_token", :authorize_path=>"/oauth/authorize", :access_token_path=>"/oauth/access_token", :proxy=>nil, :scheme=>:query_string, :http_method=>:post, :oauth_version=>"1.0", :site=> "https://example.com/">

第2步:

irb(main):039:0> access_token = OAuth::AccessToken.new consumer

=> #<OAuth::AccessToken:0xba144b7c @token="", @secret="", @consumer=#<OAuth::Consumer:0xba147430 @key="{got valid key here}", @secret="{got valid secret here}", @options={:signature_method=>"HMAC-SHA1", :request_token_path=>"/oauth/request_token", :authorize_path=>"/oauth/authorize", :access_token_path=>"/oauth/access_token", :proxy=>nil, :scheme=>:query_string, :http_method=>:post, :oauth_version=>"1.0", :site=>"https://example.com/"}>, @params={}>

请参阅上面的 Token 为空。我应该在这里拿到令牌??

第3步:然后我尝试了从上面得到的所有路径,

irb(main):041:0> access_token.get("/oauth/authorize")   
irb(main):041:0> access_token.get("/oauth/request_token")
irb(main):041:0> access_token.get("/oauth/access_token")

但是对于所有请求都得到响应,

=> #<Net::HTTPNotFound 404 Not Found readbody=true>

我不知道我在哪里犯了错误,我是否正确地执行了请求,如果不是,我应该如何对 ruby​​ 中的 2legged oauth 系统进行身份验证。或者我应该要求服务提供商在他们这边进行检查。

步骤 2 中的 Token 字段为空,这是问题吗??

任何人都可以请指导我吗?提前致谢。

4

1 回答 1

0

也许这段代码会有所帮助:

require 'oauth'
consumer_key = <your consumer key>
consumer_secret = <your consumer secret>
end_point = "https://www.example.com"
consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {
                                                 :site   => end_point,
                                                 :scheme => :header
                                             })


parameters = "user_id=1"

resp = consumer.request(:post, '/get_user/', nil, {}, parameters, { 'Content-Type' => 'application/x-www-form-urlencoded' })
于 2015-05-07T16:10:18.903 回答