OAuth: come testare con URL locali?


155

Sto provando a testare i pulsanti OAuth , ma tutti (Facebook, Twitter, LinkedIn) ritornano con errori che sembrano segnalare che non posso testarli o usarli da un URL locale .

In che modo le persone di solito lavorano nello sviluppo con roba OAuth se tutti sembrano richiedere ambienti di connessione non-dev e non-local ?


Ho risposto in quel tornarci: stackoverflow.com/a/10410838/604511
Jesvin Jose

Risposte:


133

Aggiornamento ottobre 2016 : ora il più semplice: usa lvh.me che punta sempre a 127.0.0.1.

Risposta precedente :

Poiché la richiesta di richiamata viene emessa dal browser, come risposta di reindirizzamento HTTP, è possibile impostare il file .hosts o equivalente per indirizzare un dominio che non è localhost127.0.0.1.

Diciamo per esempio si registra il seguente callback con Twitter: http://www.publicdomain.com/callback/. Assicurati che faccia www.publicdomain.comriferimento a 127.0.0.1 nel tuo file hosts, E che twitter possa effettuare una ricerca DNS riuscita su www.publicdomain.com, vale a dire che il dominio deve esistere e il callback specifico dovrebbe probabilmente restituire un messaggio di stato 200 se richiesto.

MODIFICA :

Ho appena letto il seguente articolo: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , che era collegato a questa domanda: Twitter oAuth callbackUrl - sviluppo localhost .

Per citare l'articolo:

Puoi usare bit.ly, un servizio di accorciamento degli URL. Basta accorciare l'URL [localhost come http // localhost: 8080 / twitter_callback] e registrare l'URL abbreviato come callback nell'app Twitter.

Questo dovrebbe essere più facile che armeggiare nel file .hosts.

Si noti che ora (agosto '14) bit.ly non consente l'inoltro di collegamenti a localhost; tuttavia l'accorciatore di link di Google funziona.

Modifica PS: (Nov '18): l'accorciatore di link di Google ha smesso di fornire supporto per localhost o 127.0.0.1.


3
Pensavo che il server stesse chiamando il callbackurl, e ora mi rendo conto che oauth utilizza il client come messenger e non viene stabilita alcuna connessione tra i server, il che rende molto più semplice.
Kristian Benoit,

10
Vale la pena notare che lvh.me è di proprietà di un signore chiamato Levi Cook (vedi gist.github.com/levicook/563675 ) ed è di proprietà privata. Sembra un bravo ragazzo ma non è un dominio ufficiale autorizzato da un'autorità globale, quindi potrebbe "teoricamente" smettere di funzionare ad un certo punto nel tempo.
Mario Peshev,

4
Al momento della stesura di questo documento, Google non sembra consentire estensioni di dominio fantasiose (come .me) negli URL di reindirizzamento. Di conseguenza, lvh.me non funzionava. Invece ho trovato successo con lacolhost.com .
PullJosh

3
Il proprietario di lvh.me potrebbe anche iniziare a raccogliere tutti i tuoi codici di autorizzazione ...
Taylor Buchanan,

2
@JonNylander Potrebbero facilmente cambiare i loro record DNS per puntare a un altro sito che memorizza in modo trasparente il codice e lo stato di autenticazione e reindirizza ancora a localhost. A meno che non controlli regolarmente DNS, non ti accorgeresti finché non avessero già avuto accesso. Gli unici che noterebbero immediatamente sono le persone che lo usano al di fuori di un contesto di browser.
Taylor Buchanan,

18

Oppure puoi utilizzare https://tolocalhost.com/ e configurare come reindirizzare un callback al tuo sito locale. È possibile specificare il nome host (se diverso da localhost, ad esempio yourapp.local e il numero di porta). Solo a scopo di sviluppo.


13

Puoi anche usare ngrok: https://ngrok.com/ . Lo uso sempre per avere un server pubblico in esecuzione sul mio localhost. Spero che questo ti aiuti.

Altre opzioni che forniscono gratuitamente anche il tuo dominio personalizzato sono serveo.net e https://localtunnel.github.io/www/


1
Questo è stato più facile di quanto pensassi! Ho appena creato il mio account, installato ed eseguito ./ngrok http 8080 -host-header="localhost:8080"e stavo correndo con un URL pubblico.
Miguel Reyes,

3

Google non consente test di autenticazione API su localhost utilizzando http://webporject.devo .loce .ecc e Google collegamento breve che accorcia l'URL locale ( http://webporject.dev) anche bit.ly:). Google accetta solo l'URL che inizia http://localhost/...

se vuoi testare l'autenticazione API di Google dovresti seguire questi passaggi ...

impostare un nuovo alias

se usi openservervai al pannello delle impostazioni e fai clic su aliases tabe fai clic sul menu a discesa, quindi trova localhoste scegli.

ora dovresti scegliere la cartella principale del tuo progetto web locale facendo clic sul menu a discesa successivo accanto al primo menu a discesa.

e fai clic su un pulsante chiamato adde riavvia opensever.

ora il tuo progetto locale è disponibile su questo link http://localhost/ e puoi incollare questo URL locale in api di autenticazione Google nel redirect urlcampo ...


3

È possibile modificare il file hosts su Windows o Linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

la risoluzione dei nomi di localhost è gestita all'interno del DNS stesso.

127.0.0.1 mywebsite.com

dopo aver terminato i test, devi semplicemente commentare la riga che aggiungi per disabilitarla

127.0.0.1 mywebsite.com


Ha funzionato per me, grazie. Inoltre, se si utilizza ad esempio Node.js sulla porta 3000, utilizzare mywebsite.com:3000
flow3r

3

Per gli utenti Mac, modifica il /etc/hostsfile. Devi usare sudo vi /etc/hostsse è di sola lettura. Dopo l'autorizzazione, il server oauth invia l'URL di richiamata e poiché l'URL di richiamata viene visualizzato sul browser locale, l'impostazione DNS locale funzionerà:

127.0.0.1       mylocal.com

0

Prendendo Google OAuth come riferimento

  • Nella scheda del tuo client OAuth

    1. Aggiungi il tuo esempio App URI(http://localhost:3000) per Autorizzati JavaScript origini URI
  • Nella schermata di consenso di OAuth

    1. Aggiungi mywebsite.coma domini autorizzati
  • Modifica il file hosts su Windows o Linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsda aggiungere 127.0.0.1 mywebsite.com (NB Commenta se ci sono altri 127.0.0.1)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.