4

OAuthを使い始めたばかりで、いくつかのWebサービスに接続するための小さなクライアントを作成しようとしました... Twitterを試してみましたが、それは魅力のように機能しましたが、Yelp V2 APIにもアクセスしようとしました(Pythonの例に従って)が、私はいつも答えとして戻ってきます:HTTP 400 Bad Request

パラメータがありません: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

言うまでもなく、そのコードはTwitter APIで問題なく動作します(私は実際にTwitterのサンプルコードに従いました)

よろしくお願いします、Ze

4

2 に答える 2

2

:headerの代わりに:query_stringを使用すると、すべてが機能します(少なくとも私にとっては)。

于 2010-11-14T08:02:47.487 に答える
0

シグネットを使用した同じコード:

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のドキュメントによると、OAuthパラメータをクエリ文字列で渡す必要はありません。受け入れられた回答が問題を解決したという事実は、おそらくoauthこれを引き起こしている宝石にバグがあることを私に示しています。

于 2010-12-13T21:28:03.507 に答える