Domanda

Sto cercando di costruire una web app che cattura informazioni sport di fantasia dalle API di Yahoo. So che richiede l'utilizzo di OAuth per parlare alle API. E 'stato creato usando Flask e funziona su Google App Engine.

Ho cercato di usare python-OAuth2 dai ragazzi di SimpleGeo e continuo a ricevere lo stesso errore esatto in cui si cerca di fare il lavoro di sviluppo. Ecco un frammento di codice:

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

Ecco la risposta di errore sto ottenendo:

{ 'status': '401', 'Transfer-Encoding': 'chunked', 'connessione': 'vicino', 'data': 'Mar, 26 ottobre 2010 18:24:16 GMT', 'P3P ':' policyref = "http://info.yahoo.com/w3c/p3p.xml", CP = "CAO DSP COR CUR DEV ADM TAI PSA PSD Ivaí 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-autenticazione': 'OAuth oauth_problem = consumer_key_rejected'}

Ora, ho letto la documentazione disponibile tramite Yahoo e sto perplesso perché (a) sembra tutto così semplice e (b) non riesco a capire dove sto andando male. Sto utilizzando la chiave e il segreto condiviso fornitemi da Yahoo.

Questa è la mia prima esperienza con OAuth e qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Come Kanaka sottolineato, chiamata get_access_token di Yahoo richiede l'oauth_callback, e SimpleGeo / OAuth2 non consente di specificare facilmente.

Qui ci sono un paio di soluzioni alternative:

Invece di SimpleGeo / python-OAuth2, prendere zbowling / python-OAuth2 (che è un fork di SimpleGeo, ma con qualche bel nuovo codice, e correzioni di bug), e quindi aggiungere un parametro aggiuntivo:

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

alla chiamata Client.request. In questo modo:

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

Se ti ostini a lavorare con SimpleGeo / python-OAuth2 quindi controllare la discussione dettagliata sui problemi SimpleGeo / OAuth2 e Yahoo OAuth, all'indirizzo questa pagina . Ha alcuni frammenti di codice che è possibile utilizzare.

Altri suggerimenti

Ho appena provato con python-OAuth2 (di SimpleGeo) e ottenuto lo stesso problema.

Un problema con l'implementazione di SimpleGeo è che l'oauth_callback è facile da fornire nella richiesta richiesta di token e in base a questo è necessario: http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

Ma anche quando mi costringo che a 'OOB' ho ancora il problema.

Si potrebbe tentare una propria libreria di pitone di Yahoo e vedere se questo aiuta (e quindi inviare di nuovo qui quello che hai trovato): http://github.com/yahoo/yos-social-python . Ho scoperto che da qui: http://developer.yahoo.com/social/sdk/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top