3

Yahoo の API からファンタジー スポーツの情報を取得する Web アプリを構築しようとしています。API と通信するには OAuth を使用する必要があることはわかっています。Flask を使用して作成されており、Google App Engine で実行されます。

私は SimpleGeo の人々から python-oauth2 を使用しようとしてきましたが、開発作業をしようとするとまったく同じエラーが発生し続けます。コードのスニペットを次に示します。

import oauth2 as oauth

consumer = oauth.Consumer(key=settings.OAUTH_CONSUMER_KEY, secret=settings.OAUTH_SHARED_SECRET)
request_token_url = "https://api.login.yahoo.com/oauth/v2/get_request_token"
client = oauth.Client(consumer)

resp, content = client.request(request_token_url, "GET")

私が得ているエラー応答は次のとおりです。

{'status': '401', 'transfer-encoding': 'chunked', 'connection': 'close', 'date': 'Tue, 26 Oct 2010 18:24:16 GMT', 'p3p': ' policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"', 'content-type': 'application/x-www-form-urlencoded', 'www-authenticate': 'OAuth oauth_problem=consumer_key_rejected'}

今、私は Yahoo から入手できるドキュメントを読みましたが、(a) すべてがとても簡単に思えて、(b) どこが間違っているのか分からないので困惑しています。Yahoo から提供されたコンシューマ キーと共有シークレットを使用しています。

これは OAuth の初めての経験であり、どんな助けも大歓迎です。

4

2 に答える 2

6

カナカさんが指摘したように、yahoo の get_access_token 呼び出しには oauth_callback が必要で、simplegeo/oauth2 では簡単に指定できません。

いくつかの回避策を次に示します。

simplegeo/python-oauth2 の代わりに、zbowling/python-oauth2 (simplegeo のフォークですが、いくつかの優れた新しいコードとバグ修正が含まれています) を使用し、追加のパラメーターを追加します。

parameters={'oauth_callback': 'http://example.com/callback/'}

Client.request 呼び出しに。そのようです:

client = Client(consumer)
client.request('https://api.login.yahoo.com/oauth/v2/get_request_token',
               method='GET',
               parameters={'oauth_callback': 'http://example.com/callback/'})

simplegeo/python-oauth2 を使用したい場合は、このページで simplegeo/oauth2 と yahoo oauth の問題に関する詳細な議論を確認してください。使用できるコードフラグメントがいくつかあります。

于 2010-12-17T06:26:25.853 に答える
2

python-oauth2 (simplegeo) を使用してみましたが、同じ問題が発生しました。

simplegeoの実装に関する 1 つの問題は、リクエスト トークン リクエストで oauth_callback を簡単に提供できることです。

しかし、それを「oob」に強制しても、まだ問題があります。

yahoo 独自の python ライブラリを試して、それが役立つかどうかを確認してください (そして、見つけたものをここに投稿してください): http://github.com/yahoo/yos-social-python。ここから見つけました:http://developer.yahoo.com/social/sdk/

于 2010-10-30T20:06:34.600 に答える