Pregunta

Estoy tratando de construir una aplicación web que agarra información de deportes de fantasía de la API de Yahoo. Sé que requiere el uso de OAuth con el fin de hablar con el API. Está siendo creado usando el frasco y se ejecutará en Google App Engine.

He estado tratando de usar python-OAuth2 de la gente en SimpleGeo y me siguen dando el mismo error exacto cuando se trata de hacer el trabajo de desarrollo. He aquí un fragmento de código:

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

Aquí está la respuesta de error que estoy recibiendo:

{ 'status': '401', 'Transfer-Encoding': 'fragmentada', 'conexión': 'cerca', 'fecha': 'Mar 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 Telò OTPI NUESTRO 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'}

Ahora, tengo que leer la documentación disponible a través de Yahoo y estoy confundido porque (a) parece todo tan sencillo y (b) no puedo averiguar dónde voy mal. Estoy usando la llave del consumidor y secreto compartido proporcionado a mí por Yahoo.

Esta es mi primera experiencia con OAuth y cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Como se señaló Kanaka, llamada get_access_token de yahoo requiere la oauth_callback y SimpleGeo / OAuth2 no permite especificar fácilmente.

Aquí hay un par de soluciones:

En lugar de SimpleGeo / python-OAuth2, tomar zbowling / python-OAuth2 (que es un tenedor de SimpleGeo, pero con un poco de buen código de nuevo, y corrección de errores), y luego añadir un parámetro adicional:

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

a la llamada Client.request. De esta manera:

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

Si usted insiste en trabajar con SimpleGeo / python-OAuth2 continuación, echa un vistazo a la discusión detallada sobre problemas con SimpleGeo / OAuth2 y oauth Yahoo, en esta página . Tiene algunos fragmentos de código que puede utilizar.

Otros consejos

he intentado usar python-OAuth2 (de SimpleGeo) y tiene el mismo problema.

Uno de los problemas con la implementación de SimpleGeo es que el oauth_callback es fácil de proporcionar en la petición de señal de petición y de acuerdo con ello se requiere: http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

Pero incluso cuando fuerzo que a 'fuera de banda' todavía tengo el problema.

Se podría tratar propia biblioteca pitón de Yahoo y ver si eso ayuda (y luego enviar de vuelta aquí lo que has encontrado): http://github.com/yahoo/yos-social-python . He encontrado que a partir de aquí: http://developer.yahoo.com/social/sdk/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top