category: 未分類
DATE : 2010/08/24 (Tue)
DATE : 2010/08/24 (Tue)
Google Developer Day 2010のDevQuizで出題された「2-legged OAuth」を解いた際に使用したソースコードです。一部、xxxxと伏せてある部分があります。言語にはPythonを使用しました。
OAuthでのアクセスを実現するために、oauth2モジュールを使用しました。
どのような署名を求めていたのかが失敗時のレスポンスのbodyに書かれていたため、その内容とOAuth 1.0のRFCとをにらめっこした結果、なんとか解けました。
#!/usr/bin/env python
import oauth2 as oauth
import time
import urllib2
uri = 'http://gdd-2010-quiz-japan.appspot.com/oauth/xxxxxxxxxxxxxxxxxxxxx'
params = {
'oauth_timestamp': int(time.time()),
'oauth_nonce': oauth.generate_nonce(),
'hello': 'world'
}
consumer = oauth.Consumer(
key = 'xxxxxxxxxxxxxxxxxxxxxxxx', secret = 'xxxxxxxxxxxxxxxxxxxxxxxx')
params['oauth_consumer_key'] = consumer.key
request = oauth.Request(method = 'POST', url = uri, parameters = params)
signature_method = oauth.SignatureMethod_HMAC_SHA1()
request.sign_request(signature_method, consumer, None)
header = request.to_header('devquiz')
http_request = urllib2.Request(uri, 'hello=world', header)
try:
response = urllib2.urlopen(http_request)
except urllib2.HTTPError, e:
print e.read()
print response.info()
PR
●この記事にコメントする
忍者ブログ [PR]
