我试图通过Typhoeus使用Ruby向Bitbucket的API发送请求,并且我使用来自" OAuth消费者的凭据"页面 - consumer_key
和consumer_secret
。我可以很好地获取令牌,但是在尝试从OAuth帮助程序生成标头时出现错误。这是相关代码(请注意,这不是Rails;我使用的是Sinatra):
# oauth_token and oauth_token_secret are from a request to https://bitbucket.org/api/1.0/oauth/request_token
@consumer = OAuth::Consumer.new(
consumer_key,
consumer_secret,
)
@token = OAuth::Token.new(oauth_token, oauth_token_secret)
options = {
method: :post,
body: body.to_json
}
oauth_params = {:consumer => @consumer, :token => @token}
hydra = Typhoeus::Hydra.new
url = "https://api.bitbucket.org/2.0/repositories/..."
req = Typhoeus::Request.new(url, options)
oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => url))
req.options[:headers].merge!({"Authorization" => oauth_helper.header})
最后一行失败,出现OAuth::RequestProxy::UnknownRequestType
错误。基本上它的含义是OAuth RequestProxy不理解Typhoeus::Request
对象;从我所看到的情况来看,它只支持Net::HTTPGenericRequest
和Hash
。 Typhoeus文件表明这应该有效,所以我可能做错了。
或者,有更好的方法吗?我应该使用不同的请求库吗? HTTParty并没有像这样对auth标头提供很好的支持。谢谢!
答案 0 :(得分:2)
您需要明确要求RequestProxy。
require 'typhoeus'
require 'oauth'
require 'oauth/request_proxy/typhoeus_request'