Frage

Ich versuche, einen Web-App zu erstellen, die Fantasy-Sport-Informationen von Yahoo API greift. Ich weiß, dass es die Verwendung von OAuth zu sprechen, um an die API erfordert. Es wird mit Flask erstellt und wird auf Google App Engine ausgeführt werden.

Ich habe versucht, Python-oauth2 von den Leuten bei SimpleGeo zu verwenden, und ich immer exakt den gleichen Fehler, wenn ich versuche Entwicklungsarbeit zu tun. Hier ist ein Code-Snippet:

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")

Hier ist die Fehlerreaktion erhalte ich:

{ 'Status': '401', 'Transfer-Encoding': 'gestückelt', 'Verbindung': 'nah', 'Datum': 'Tue, 26. Oktober 2010 18.24.16 GMT', ‚p3p ':' policyref = "http://info.yahoo.com/w3c/p3p.xml", CP = "CAO DSP COR CUR ADM DEV TAI PSA PSD Ivaí IVDi CONi Telo OTPi UNSERE DELi SAMi OTRI UNRi pubi IND PHY ONL UNI PUR FIN COM NAV INT DER CNT STA POL HEA PRE LOC GOV "‘, 'content-type': 'application / x-www-form-urlencoded', 'wWW-authenticate': 'OAuth oauth_problem = consumer_key_rejected'}

Jetzt habe ich die Dokumentation über Yahoo! lesen und ich bin ratlos, weil (a) Es scheint alles so einfach und (b) Ich kann nicht herausfinden, wo ich falsch gehe. Ich bin mit dem Consumer-Key und Shared Secret mir von Yahoo zur Verfügung gestellt.

Dies ist meine erste Erfahrung mit OAuth und jede Hilfe würde sehr geschätzt werden.

War es hilfreich?

Lösung

Wie kanaka wies darauf hin, Yahoos get_access_token Aufruf der oauth_callback erfordert, und SimpleGeo / oauth2 erlaubt Ihnen nicht, es leicht zu spezifizieren.

Hier sind ein paar Lösungen:

Statt SimpleGeo / python-oauth2, nehmen zbowling / python-oauth2 (das ist ein Fork von SimpleGeo, aber mit einigen netten neuen Code und Fehlerbehebungen) und dann einen zusätzlichen Parameter hinzu:

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

zum Client.request Anruf. Wie so:

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

Wenn Sie darauf bestehen, auf die Arbeit mit SimpleGeo / python-oauth2 dann schauen Sie sich die ausführliche Diskussion über die Probleme mit SimpleGeo / oauth2 und Yahoo oauth, unter diese Seite . Es hat einige Code-Fragmente, die Sie verwenden können.

Andere Tipps

Ich habe gerade versucht, mit Python-oauth2 (SimpleGeo ist) und bekam das gleiche Problem.

Ein Problem bei SimpleGeo Implementierung ist, dass die oauth_callback einfach in der Anforderungs-Token Anfrage zur Verfügung zu stellen und nach dieser es erforderlich ist: http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

Aber selbst wenn ich, dass zwingen ‚oob‘ ich immer noch das Problem.

Sie könnten Yahoos eigene Python-Bibliothek versuchen und sehen, ob das hilft (und dann schreiben Sie wieder hier, was Sie gefunden): http://github.com/yahoo/yos-social-python . Ich fand, dass von hier: http://developer.yahoo.com/social/sdk/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top