0

API や HTTP リクエストを使用するのは初めてなので、問題が発生しています。GET リクエストから取得したトークン情報を API に渡す方法がわかりません。imgur API は、3 つのエンドポイントが必要であると言います: http://api.imgur.com/authですが、要求されたトークンを渡すことができないため、2 番目のエンドポイントまでしか取得できません。

モジュールのドキュメントは、それについて私には非常に曖昧です: https://github.com/maraujop/requests-oauth

これは、認証を正常に渡すはずのコードですが、htmlページhttp://pastebin.com/19hnBy1Cを返します。

import requests
from oauth_hook import OAuthHook
import cgi

OAuthHook.consumer_key = 'XXXXXXX'
OAuthHook.consumer_secret = 'YYYYY'


#just in case
oauth_hook = OAuthHook(header_auth=True)

#request the tokens, using the keys set above
r = requests.get(url='https://api.imgur.com/oauth/request_token', hooks={'pre_request': oauth_hook,})

#parse the lsit
tokenList = cgi.parse_qs(r.content)

token = tokenList['oauth_token']
tokenSecret = tokenList['oauth_token_secret']

#this is where I'm not sure what to do, 
#I create a new hook with the tokens I received
oauth_hook = OAuthHook(access_token=token[0], access_token_secret=tokenSecret[0])

#send the GET request
r = requests.get(url='https://api.imgur.com/oauth/authorize', hooks={'pre_request': oauth_hook,})

#this is that HTML that requires me to enter account info, how do I do that in python?
print r.content

#this is the next step, which, if you uncomment the last print, shows that the auth failed.
r = requests.get(url='https://api.imgur.com/oauth/access_token', hooks={'pre_request': oauth_hook,})

#print r.text

続けるにはどうするのが一番いいですか?

authorizeユーザー名/パスワードをデータまたはパラメーターとして使用して、POST を API に送信できるのではないかと考えましたが、うまくいかなかったようです。

Imgur API は、良いアイデアを得るためにいくつかの Twitter ドキュメントを見ることを提案していますが、私が読んでいるものは次のとおりです。 oauth/は、PHP であるため、私の頭を少し超えていますが、それは私がやるべきことのようです。

4

1 に答える 1

1

私は requests-oauth の作成者です。最近、このアプリのバージョン 0.4.0 をリリースし、OAuth の新規参入者を支援するドキュメントを改善しました。

ここに、うまくいけば、あなたの質問に対する答えがあります: https://github.com/maraujop/requests-oauth#3-legged-authorization

回答に時間がかかり申し訳ありません。

于 2012-05-21T09:03:27.863 に答える