Question

Je suis en train de construire une application web qui prend info sports fantasy de l'API de Yahoo. Je sais que cela nécessite l'utilisation de OAuth pour parler à l'API. Il est créé à l'aide Flask et fonctionne sur Google App Engine.

J'ai essayé d'utiliser python-oauth2 des gens de SimpleGeo et je continue à obtenir la même erreur exacte lorsque vous essayez de faire un travail de développement. Voici un extrait de code:

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

Voici la réponse d'erreur que je reçois:

{ 'status': '401', 'transfert encoding': 'morcelées', 'connexion': 'close', 'date': 'Mar 26 octobre 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 NOTRE DELi SAMI OTRI UNRi pUbi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE COL GOV " », 'type de contenu': 'application / x-www-form-urlencoded', 'www-authenticate': 'OAuth oauth_problem = consumer_key_rejected'}

Maintenant, j'ai lu la documentation disponible via Yahoo et je suis déconcerté parce que (a) il semble tout aussi simple et (b) Je ne peux pas savoir où je vais mal. J'utilise la clé et le code secret partagé m'a fourni par Yahoo.

Ceci est ma première expérience avec OAuth et toute aide serait grandement apprécié.

Était-ce utile?

La solution

Kanaka a souligné, l'appel get_access_token Yahoo exige oauth_callback et SimpleGeo / oauth2 ne vous permet pas de spécifier facilement.

Voici quelques solutions de contournement:

Au lieu de SimpleGeo / python-oauth2, prenez zbowling / python-oauth2 (qui est une fourchette de SimpleGeo, mais avec une belle nouveau code et corrections de bugs), puis ajoutez un paramètre supplémentaire:

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

à l'appel Client.request. Comme ceci:

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 vous insistez sur le travail avec SimpleGeo / python-oauth2 puis vérifier la discussion détaillée sur les problèmes avec SimpleGeo / oauth2 et OAuth Yahoo, cette page . Il a quelques fragments de code que vous pouvez utiliser.

Autres conseils

Je viens essayé d'utiliser python-oauth2 (de SimpleGeo) et a obtenu le même problème.

Un problème avec la mise en œuvre de SimpleGeo est que le oauth_callback est facile à fournir dans la demande de jeton de demande et en fonction de cela, il est nécessaire: http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

Mais même quand je force que, pour « oob » J'ai encore le problème.

Vous pouvez essayer de bibliothèque python de Yahoo et voir si cela aide (et puis après retour ici ce que vous avez trouvé): http://github.com/yahoo/yos-social-python . Je trouve que d'ici: http://developer.yahoo.com/social/sdk/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top