私は、oauth で認証されたリクエストを送信する方法を考え出すことで、壁に頭をぶつけてきました。
アクセス トークンを取得できましたが、アクセス トークンを使用してリクエストを送信する方法が完全にはわかりませんでした。Twitterの開発者情報でこれを見つけました:
https://dev.twitter.com/docs/auth/oauth/single-user-with-examples#python には、承認されたリクエストを送信するためのコード例がいくつかあります。
def oauth_req(url, key, secret, http_method="GET", post_body=None,http_headers=None):
consumer = oauth.Consumer(key=consumerKey, secret=consumerSecret)
token = oauth.Token(key=tokenKey, secret=tokenSecret)
client = oauth.Client(consumer, token)
resp, content = client.request(
url,
method=http_method,
body=post_body,
headers=http_headers,
#force_auth_header=True
)
return resp,content
oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
ただし、すべての情報を含めたところ、次のエラーが表示されました。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/python-22060Umg.py", line 153, in <module>
transactions = oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
File "/tmp/python-22060Umg.py", line 76, in oauth_req
force_auth_header=True
TypeError: request() got an unexpected keyword argument 'force_auth_header'
ここで、:user は実際のユーザー (投稿から削除しました) であり、tokenKey/tokenSecret はアクセス トークンです。
おそらく、問題のある行をコメントアウトするのと同じくらい簡単だと思いましたが、そのような運はありませんでした:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/python-22060hwm.py", line 153, in <module>
transactions = oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
File "/tmp/python-22060hwm.py", line 75, in oauth_req
headers=http_headers
File "/usr/lib/python2.7/dist-packages/oauth2/__init__.py", line 662, in request
req.sign_request(self.method, self.consumer, self.token)
File "/usr/lib/python2.7/dist-packages/oauth2/__init__.py", line 493, in sign_request
self['oauth_body_hash'] = base64.b64encode(sha(self.body).digest())
TypeError: must be string or buffer, not None
だから今、スタックオーバーフロー、あなたは私の唯一の希望です! 私のアクセストークンを使用してリクエストを送信する方法について、誰か提案がありますか?
ありがとう!