2010-11-12 3 views
4

Я только начинаю с OAuth, и я попытался сделать небольшой клиент для подключения к некоторым веб-сервисам ... Я пробовал твиттер, и это сработало как шарм, однако я также попытался доступ Yelp V2 API (следуя их примеру Python), но я всегда получаю обратно в качестве ответов: HTTP 400 Bad RequestИспользование Ruby + OAuth для доступа к API Yelp

отсутствующий параметр: oauth_consumer_key

Вот мой код:

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 

Независимо от того, чтобы сказать, , этот код работает с твиттером A PI без каких-либо проблем (я на самом деле последовал пример кода Твиттера)

Приветствия и спасибо заранее, Ze

ответ

2

Использование: query_string вместо: заголовок и все будет работать (по крайней мере для меня).

0

же код, используя Signet:

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 

Согласно Yelp documentation, параметры OAuth сделать не должны быть переданы в строке запроса. Тот факт, что принятый ответ разрешил проблему, указывает мне, что, вероятно, ошибка в камне oauth вызывает это.

Смежные вопросы