ドキュメントによると、認証にはさらに多くの手順があります
リクエストの作成
各リクエストには、次の OAuth プロトコル パラメータが含まれている必要があります。
OAuth Parameter Value
oauth_consumer_key Your OAuth consumer key (from Manage API Access).
oauth_token The access token obtained (from Manage API Access).
oauth_signature_method hmac-sha1
oauth_signature The generated request signature, signed with the oauth_token_secret obtained (from Manage API Access).
oauth_timestamp Timestamp for the request in seconds since the Unix epoch.
oauth_nonce A unique string randomly generated per request.
これらのパラメーターは、HTTP (Authorization) ヘッダーで URL クエリ キーとして、または POST データで渡すことができます。OAuth 署名の生成は、oauth_token_secret で HMAC-SHA1 を適用することによって行われます。OAuth コンシューマー キーは、Manage API Access で確認できます。これらのリクエストを生成するには、OAuth ライブラリを使用できます。
必要なものを渡しoauth_timestamp
ていないか、HMAC-SHA1 を適用していないため、Invalid Signature
エラーが発生します。送信する必要があるものの上のドキュメントで明確に概説されています。
使用できる実際の python yelp APIもありますが、リクエストを行うには、サンプル コードrequest
の関数 に基づいて以下の例を使用できます。oauth2
requests
import requests
import oauth2
def request(url, url_params=None):
consumer_key = ""
consumer_secret = ""
token = ""
token_secret =""
url_params = url_params or {}
consumer = oauth2.Consumer(consumer_key, consumer_secret)
oauth_request = oauth2.Request(method="GET", url=url, parameters=url_params)
oauth_request.update(
{
'oauth_nonce': oauth2.generate_nonce(),
'oauth_timestamp': oauth2.generate_timestamp(),
'oauth_token': token,
'oauth_consumer_key': consumer_key
}
)
token = oauth2.Token(token, token_secret)
oauth_request.sign_request(oauth2.SignatureMethod_HMAC_SHA1(), consumer, token)
signed_url = oauth_request.to_url()
print(u'Querying {0} ...'.format(url))
return requests.get(signed_url).json()
あなたのURLを使用すると、jsonの全負荷が出力されます。その開始は次のとおりです。
Querying http://api.yelp.com/v2/search?location=Boston&term=food ...
{'region': {'center': {'longitude': -71.05460875, 'latitude': 42.35028894954365}, 'span': {'latitude_delta': 0.0325510910039668, 'longitude_delta': 0.04668455000000904}}, 'total': 8351, 'businesses': [{'name': "Giacomo's Ristorante", 'url': 'http://www.yelp.com/biz/giacomos-ristorante-boston', 'mobile_url': 'http://m.yelp.com/biz/giacomos-ristorante-boston', 'rating_img_url_large': 'http://s3-media2.fl.yelpcdn.com/assets/2/www/img/ccf2b76faa2c/ico/stars/v1/stars_large_4.png', 'phone':
...............................................................
...............................................................
API が python 3 をサポートしているかどうかはわかりませんが、上記のコードは python3 と python2 でテストされており、問題なく動作します。インストールしていない場合は、リクエストと同じようにoauth2
簡単にインストールできます。pip install oauth2