OAuth: ¿cómo probar con URL locales?

154

Estoy tratando de probar los botones de OAuth , pero todos (Facebook, Twitter, LinkedIn) vuelven con errores que parecen indicar que no puedo probarlos o usarlos desde una URL local .

¿Cómo la gente por lo general con el trabajo en el desarrollo de OAuth cosas si todos ellos parecen requerir un no-desarrollador y no locales entornos conexiones?

Asombro
fuente
Respondí sobre eso en algún momento: stackoverflow.com/a/10410838/604511
Jesvin Jose

Respuestas:

133

Actualización de octubre de 2016 : más fácil ahora: use lvh.me que siempre apunta a 127.0.0.1.

Respuesta anterior :

Dado que el navegador emite la solicitud de devolución de llamada, como respuesta de redireccionamiento HTTP, puede configurar su archivo .hosts o equivalente para señalar un dominio que no sea localhost 127.0.0.1.

Digamos por ejemplo, se registra la siguiente devolución de llamada con Twitter: http://www.publicdomain.com/callback/. Asegúrese de que www.publicdomain.comapunta a 127.0.0.1 en su archivo de hosts, y que Twitter puede realizar una búsqueda DNS exitosa en www.publicdomain.com, es decir, el dominio debe existir y la devolución de llamada específica probablemente debería devolver un mensaje de estado 200 si se solicita.

EDITAR :

Acabo de leer el siguiente artículo: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , que estaba vinculado desde esta pregunta: Twitter oAuth callbackUrl - desarrollo localhost .

Para citar el artículo:

Puede usar bit.ly, un servicio de acortamiento de URL. Simplemente acorte la [URL localhost como http // localhost: 8080 / twitter_callback] y registre la URL acortada como la devolución de llamada en su aplicación de Twitter.

Esto debería ser más fácil que jugar en el archivo .hosts.

Tenga en cuenta que ahora (agosto '14) bit.ly no permite el reenvío de enlaces a localhost; Sin embargo, el acortador de enlaces de Google funciona.

Edición de PS: (Nov '18): el acortador de enlaces de Google dejó de dar soporte para localhost o 127.0.0.1.

Jon Nylander
fuente
3
Pensé que el servidor estaba llamando al callbackurl, y ahora me doy cuenta de que oauth usa al cliente como mensajero y no se hacen conexiones entre servidores, lo que lo hace mucho más simple.
Kristian Benoit
10
Vale la pena señalar que lvh.me es propiedad de un caballero llamado Levi Cook (ver gist.github.com/levicook/563675 ) y es de propiedad privada. Parece un buen tipo, pero no es un dominio autorizado formalmente por una autoridad global, por lo que "teóricamente" puede dejar de funcionar en algún momento.
Mario Peshev
44
Al momento de escribir esto, Google no parece permitir extensiones de dominio sofisticadas (como .me) en las URL de redireccionamiento. Como resultado, lvh.me no estaba funcionando. En su lugar, he encontrado el éxito con lacolhost.com .
PullJosh
3
El propietario de lvh.me también podría comenzar a recopilar todos sus códigos de autorización ...
Taylor Buchanan
2
@JonNylander Podrían cambiar fácilmente sus registros DNS para que apunten a otro sitio que almacene de forma transparente el código y el estado de autenticación y aún así redirija de nuevo a localhost. A menos que verifique DNS regularmente, no lo notará hasta que ya tengan acceso. Los únicos que notarían de inmediato son las personas que lo usan fuera del contexto de un navegador.
Taylor Buchanan
18

O puede usar https://tolocalhost.com/ y configurar cómo debe redirigir una devolución de llamada a su sitio local. Puede especificar el nombre de host (si es diferente de localhost, es decir, yourapp.local y el número de puerto). Solo para fines de desarrollo.

Jørgen
fuente
13

También puede usar ngrok: https://ngrok.com/ . Lo uso todo el tiempo para tener un servidor público ejecutándose en mi host local. Espero que esto ayude.

Otras opciones que incluso proporcionan su propio dominio personalizado de forma gratuita son serveo.net y https://localtunnel.github.io/www/

usuario4848830
fuente
1
¡Esto fue más fácil de lo que pensaba! Acabo de crear mi cuenta, la instalé y ejecuté ./ngrok http 8080 -host-header="localhost:8080"y estaba ejecutando con una URL pública.
Miguel Reyes
3

Google no permite probar la API de autenticación en localhost usando http://webporject.devo .locy .etc y el enlace corto de google que acortó su url local ( http://webporject.dev) también bit.ly:). Google acepta solo la URL que comienzahttp://localhost/ ...

si quieres probar la API de autenticación de Google, debes seguir estos pasos ...

establecer un nuevo alias

si usa openservervaya al panel de configuración y haga clic en aliases taby haga clic en el menú desplegable y luego búsquelo localhosty selecciónelo.

ahora debe elegir la carpeta raíz del proyecto web local haciendo clic en el siguiente menú desplegable que se encuentra junto al primer menú desplegable.

y haga clic en un botón llamado addy reinicie opensever.

ahora su proyecto local disponible en este enlace http://localhost/ también puede pegar esta url local a la API de autenticación de Google en el redirect urlcampo ...

Akbar Mirsiddikov
fuente
3

Puede editar el archivo hosts en Windows o Linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

La resolución del nombre localhost se maneja dentro del DNS mismo.

127.0.0.1 mywebsite.com

después de terminar sus pruebas, simplemente comente la línea que agrega para deshabilitarla

127.0.0.1 mywebsite.com

ramzieus
fuente
A mí me funcionó, gracias. Además, si usa, por ejemplo, Node.js en el puerto 3000, use mywebsite.com:3000
flow3r
3

Para usuarios de Mac, edite el /etc/hostsarchivo. Tienes que usar sudo vi /etc/hostssi es de solo lectura. Después de la autorización, el servidor oauth envía la URL de devolución de llamada, y dado que esa URL de devolución de llamada se representa en su navegador local, la configuración de DNS local funcionará:

127.0.0.1       mylocal.com
Gireesh
fuente
0

Tomando Google OAuth como referencia

  • En su pestaña de cliente OAuth

    1. Añadir su ejemplo URI de la aplicación(http://localhost:3000) a Autorizados orígenes de JavaScript URI
  • En su pantalla de consentimiento de OAuth

    1. Agregar mywebsite.coma dominios autorizados
  • Edite el archivo de hosts en Windows o Linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostspara agregar 127.0.0.1 mywebsite.com (NB Comente alguno si hay algún otro 127.0.0.1)

akash
fuente