Sto costruendo un'applicazione Python che deve comunicare con un fornitore di servizi OAuth. SP richiede di specificare un URL di richiamata. Specificare localhost ovviamente non funzionerà. Non riesco a configurare un server pubblico di fronte. Qualche idea oltre a pagare per server/hosting? È possibile?Come si sviluppa OAuth localmente?
risposta
Questo può aiutare:
http://www.marcworrell.com/article-2990-en.html
E 'php così dovrebbe essere abbastanza semplice da configurare sul server dev.
Ho provato questa volta:
E 'piuttosto semplice. Hai un link per scaricare il codice in fondo.
due cose:
L'OAuth provider di servizi in questione sta violando le specifiche OAuth se si sta dando un errore se non si specifica un URL di callback. callback_url è spec'd to be an OPTIONAL parameter.
Ma, pedanteria a parte, probabilmente vorrai ricevere una richiamata quando l'utente ha finito, così sai che puoi riscattare il token di richiesta per un token di accesso. Yahoo's FireEagle developer docs hanno molte ottime informazioni su come farlo.
Anche nel secondo caso, l'URL di richiamata in realtà non deve essere visibile da Internet. Il fornitore di servizi OAuth reindirizzerà il browser utilizzato dall'utente per fornire il proprio nome utente/password all'URL di richiamata.
I due modi più comuni per farlo sono:
- creare un servizio Web muto dall'interno dell'applicazione che ascolta ad una porta (ad esempio, http://localhost:1234/) per il callback di completamento, o
- Pubblicare un protocollo gestore (dovrai verificare con la documentazione del tuo sistema operativo in particolare su come fare una cosa del genere, ma abilita cose come < a href = "skype: 555-1212" > per funzionare).
(Un esempio di flusso che credo che stai descrivendo lives here.)
Si potrebbe creare 2 applicazioni? 1 per la distribuzione e l'altro per il test.
In alternativa, è possibile includere anche un parametro oauth_callback quando si richiede un token di richiesta. Alcuni provider reindirizzeranno all'URL specificato da oauth_callback (ad esempio Twitter, Google) ma alcuni ignoreranno questo url di richiamata e reindirizzeranno a quello specificato durante la configurazione (ad es.Yahoo)
Questo era con l'OAuth di Facebook: in realtà era in grado di specificare "http://127.0.0.1:8080" come l'URL del sito e l'URL di richiamata. Ci sono voluti diversi minuti prima che le modifiche all'app Facebook si propagassero, ma poi ha funzionato.
Nel caso in cui si utilizza * lo stile del sistema nix, creare un alias come 127.0.0.1 mywebsite.dev
in /etc/hosts
(è necessario avere la linea che è simile a sopra menzionato nel file, utilizzare http://website.dev/callbackurl/for/app
in call back URL e durante i test locale.
Anche Windows ha un file hosts. Su Windows 7 è su 'C: \ Windows \ System32 \ drivers \ etc \ hosts' –
Così come ho risolto questo problema (usando l'interfaccia di OAuth di BitBucket) specificando l'URL di callback a localhost (o qualsiasi altra cosa diavolo vuoi), e poi seguendo l'URL di autorizzazione con curl, ma con la sola svolta di restituire l'HTTP Esempio:
curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null
Inserimento per le tue credenziali e l'URL di autorizzazione (ricorda di sfuggire al punto esclamativo!).
Che cosa si dovrebbe ottenere è qualcosa di simile:
200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN
E si può raschiare l'oath_verifier da questo.
fare lo stesso in pitone:
import pycurl
devnull = open('/dev/null', 'w')
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION, devnull.write)
c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD")
c.setopt(pycurl.URL, authorize_url)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.perform()
print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)
Spero che questo sia utile per qualcuno!
Il caveat con questo (almeno con BitBucket), è che dovrai visitare l'URL per fare clic su accetta almeno inizialmente. E poi penso che ricordi le tue credenziali. –
- 1. Sviluppa localmente SASS, carica in modifica
- 2. L'ottimizzazione prematura si sviluppa su macchine lente?
- 3. TToolButton Height si sviluppa con Style = tbsDropdown
- 4. Perché Yeoman si sviluppa senza/styles/fonts?
- 5. Come aggiungere "leva" quando si sviluppa una gemma Ruby
- 6. Come si può usare activemq non localmente?
- 7. Come testare l'API twitter localmente?
- 8. Quando si sviluppa un rubygem con estensioni C, come si esegue il test locale con Rspec?
- 9. Come si esegue una versione di un'app Web mentre si sviluppa la versione successiva?
- 10. Come si registra un utente con Oauth?
- 11. Come eseguire Postgres localmente
- 12. Come si crea una finestra popup quando si esegue oauth?
- 13. Come utilizzare UndecidableInstances localmente?
- 14. Come si eseguono Rails con HTTP localmente per il test?
- 15. Come memorizzare SQLcipher password localmente
- 16. Autenticazione OAuth come Facebook
- 17. Come posso utilizzare Git localmente?
- 18. Come rimuovere un ramo localmente?
- 19. Come recuperare `.git/index` localmente?
- 20. OAuth: caso d'uso implementazione OAuth
- 21. Disabilita New Relic dai rapporti quando si cambia ambiente localmente
- 22. Come utilizzare OAuth 2 - Esempio OAuth 2 C#
- 23. Tipo parametrico localmente astratto
- 24. È EC2 Ubuntu 12.04 diverso, se si compila Haskell localmente?
- 25. Come verificare localmente la connessione socket.io?
- 26. documentazione django localmente impostata
- 27. Cosa tenere a mente quando si sviluppa un'applicazione MVN asp.net multi-tenant?
- 28. come ripristinare una cartella eliminata localmente?
- 29. Publishing Gradle istantanee localmente
- 30. Come funziona Oauth a 2 vie in OAuth 2.0?
Infatti. 'localhost' non funzionerà, ma' 127.0.0.1' lo farà. –