忍者ブログ
[384] [383] [382] [381] [380] [379] [378] [377] [376] [375] [374]

DATE : 2024/04/19 (Fri)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


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
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック