Uso de OAuth para entornos de desarrollo y producción.

He visto otras preguntas sobre SO sobre esto (aquí, aquíyaquí), pero no estoy satisfecho con ninguna de las soluciones, así que lo pregunto de nuevo. Estoy iniciando una aplicación web que utilizará OAuth de múltiples proveedores (Google, Facebook, Twitter, Yahoo) para la autenticación. Estoy luchando por encontrar una configuración adecuada para usar tanto en un entorno de desarrollo local como en un entorno de producción.

Las soluciones principales que he encontrado son registrar múltiples aplicaciones dentro de cada proveedor, recibiendo una clave de consumidor diferente y un secreto para cada uno:

"Mi aplicación de producción" - con un URI de devolución de llamada ahttp://www.myapp.com/callback

"Mi desarrollo de aplicaciones" - con un URI de devolución de llamada ahttp://local.myapp.com/callback

Agregue una entrada a su archivo de hosts locales para señalarlocal.myapp.com a127.0.0.1 y alguna configuración para que su aplicación utilice las claves de consumidor adecuadas según el entorno, y está listo para comenzar, ¿verdad?

Pero mi aplicación essensible y necesito probar mi entorno de desarrollo que se ejecuta en mi PC desde otros dispositivos, como mi iPhone y iPad, ninguno de los cuales podrá resolver el URI de devolución de llamada de desarrollo.

Digamos que ya tengo un servidor DNS en mi red y puedo agregar la entrada paralocal.myapp.com allí en lugar de mi archivo de hosts locales y ahora puedo acceder a mi instancia de desarrollo desde cualquier dispositivo en la red.

Pero todo mi equipo de desarrollo opera en la misma red local. Ahoralocal.myapp.com apunta a la misma IP para todos. Volvamos a configurar el archivo de hosts en la computadora de cada desarrollador para que todos puedan trabajar independientemente desde su estación de trabajo. Ahora nadie puede volver a probar su instancia de desarrollo desde su iPhone. No parece ser la respuesta correcta para cada desarrollador registrar una aplicación con el proveedor solo para que puedan especificar un URI de devolución de llamada único.

Normalmente, cuando me meto en la maleza con una solución complicada para un problema aparentemente sencillo, generalmente significa que estoy haciendo algo fundamentalmente incorrecto. ¿Me estoy perdiendo algo acerca de OAuth, no está destinado a ser usado de esta manera? Estoy tentado de descartar OAuth por completo y solo voy con OpenID (no se requiere registro de la aplicación y puedo especificar el URI de devolución de llamada desde la aplicación), pero luego pierdo a dos de los grandes bateadores de Facebook y Twitter. Realmente no necesito ninguno de los datos del usuario, es bueno tenerlo si está disponible. ¿Alguien me puede devolver a OAuth?

Respuestas a la pregunta(3)

Su respuesta a la pregunta