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]