使用Ruby+;OAuth访问YelpAPI
我刚刚开始使用OAuth,我尝试创建一个小客户端来连接到一些Web服务。。。我尝试了twitter,它工作起来很有魅力,然而,我也尝试了访问Yelp V2 API(遵循他们的Python示例),但我总是得到答案: HTTP 400错误请求 缺少参数:oauth_消费者_密钥 这是我的密码:使用Ruby+;OAuth访问YelpAPI,ruby,oauth,oauth-ruby,Ruby,Oauth,Oauth Ruby,我刚刚开始使用OAuth,我尝试创建一个小客户端来连接到一些Web服务。。。我尝试了twitter,它工作起来很有魅力,然而,我也尝试了访问Yelp V2 API(遵循他们的Python示例),但我总是得到答案: HTTP 400错误请求 缺少参数:oauth_消费者_密钥 这是我的密码: require 'rubygems' require 'oauth' CONSUMER_KEY = "MY_CONSUMER_KEY" SECRET = "MY_CONSUMER_SECRET" TOKEN
require 'rubygems'
require 'oauth'
CONSUMER_KEY = "MY_CONSUMER_KEY"
SECRET = "MY_CONSUMER_SECRET"
TOKEN = "MY_TOKEN"
TOKEN_SECRET = "MY_TOKEN_SECRET"
consumer = OAuth::Consumer.new( CONSUMER_KEY,SECRET, {:site => "http://api.yelp.com", :signature_method => "HMAC-SHA1", :scheme => :header})
access_token = OAuth::AccessToken.new( consumer, TOKEN,TOKEN_SECRET)
p access_token.get("/v2/search?location=new+york").body
不管怎么说,该代码与twitterapi一起工作没有任何问题(我实际上遵循了twitter的示例代码)
干杯并提前表示感谢,
Ze使用:query\u字符串而不是:header,所有内容都将正常工作(至少对我而言)。相同的代码,使用: 根据,必须在查询字符串中传递OAuth参数。接受的答案解决了这个问题,这一事实向我表明,
oauth
gem中可能有一个bug导致了这个问题
require 'signet/oauth_1/client'
client = Signet::OAuth1::Client.new(
:consumer_key => 'MY_CONSUMER_KEY',
:consumer_secret => 'MY_CONSUMER_SECRET',
:access_token_key => 'MY_TOKEN_KEY',
:access_token_secret => 'MY_TOKEN_SECRET'
)
response = client.fetch_protected_resource(
:uri => 'http://api.yelp.com/v2/search?location=new+york'
)
# The Rack response format is used here
status, headers, body = response
p body