Mi aplicación está diseñada de la siguiente manera: Tengo un servicio web (ejecutándose en GAE, no muy relevante para esta pregunta) y el los datos que contiene este servicio están disponibles a través de un sitio web y a través de aplicaciones móviles y de escritorio.Cómo autorizar aplicaciones móviles con un tercero por oauth PERO conectar a mi servicio, no el tercero
Actualmente, el usuario se autentica en el sitio web a través de Google ClientLogin y las aplicaciones se autentican/obtienen autorización a través del proveedor de Oauth integrado de GAE. (OAuth se usa aquí principalmente para la autenticación, mi aplicación no usa datos externos a través de OAuth que no sean el ID y la dirección de correo electrónico únicos del usuario).
Lo que me gustaría hacer es ampliar la cantidad de servicios que los usuarios pueden usar para iniciar sesión. Debido al factor de complicación de las aplicaciones, parece que necesito OAuth. Pero realmente no puedo conceptualizar adecuadamente cómo debería funcionar este flujo.
Tomemos Facebook como ejemplo. Cuando una aplicación móvil pasa por el flujo oauth de Facebook y adquiere un token de acceso, esto no es suficiente, porque es mi servicio, no la aplicación, que realmente necesita hablar con Facebook para recuperar información de contacto y una identificación de usuario única. Esto me lleva a pensar que el proceso OAuth debe ocurrir en el contexto de mi servicio, y no en la aplicación móvil. Mi servicio se convierte entonces en el consumidor y Facebook el oauth providor, y el servicio conserva el token de acceso oauth, esto sucede cuando un usuario configura su cuenta por primera vez.
Si este es el enfoque correcto, ¿dónde deja eso la autenticación para las aplicaciones? ¿Qué sucede cuando el usuario ya tiene una cuenta e instala una nueva instancia de una aplicación móvil? También me imagino realizando el proceso oauth, haciendo coincidir credenciales con los datos ya almacenados por mi servicio, y luego emitiendo mi propio "token de acceso" a la aplicación desde el servicio, para autorizar esa instancia de la aplicación. Esto parece intrincado y hackish.
Estoy seguro de que no puedo ser la única persona que de hecho está "pidiendo prestado" el sistema de cuenta de un tercero para una aplicación móvil con un back-end, pero realmente no veo cuál es la forma correcta de haz esto es
¿Qué no estoy viendo y/o estoy conceptualmente equivocado?
* Crickets * Siento que podría haber formulado esta pregunta incorrectamente. Si es así, por favor hágamelo saber. De lo contrario, responderé mi propia pregunta aquí ... con el tiempo. – tempy