2012-03-20 25 views
7

Estoy desarrollando una aplicación PhoneGap y solicito a mis usuarios que inicien sesión a través de Google con OAuth2. ¿Es esto posible directamente a través de JavaScript? Casi no tengo experiencia con JavaScript (y jQuery).PhoneGap y OAuth2

¿Cuáles son las opciones? He pensado en una alternativa engorrosa que implica publicar el nombre de usuario/contraseña en una aplicación que he alojado en un servidor que luego se encarga de iniciar sesión. Luego, la aplicación PhoneGap tendrá que preguntarle al servidor si la autenticación fue exitosa. Sin embargo, esperaba que hubiera una manera más simple.

¿Cuál es la mejor manera de iniciar sesión a través de Google en una aplicación PhoneGap?

+0

tutorial de Libby sobre este tema es probablemente el mejor lugar para que usted comience: http://www.mobiledevelopersolutions.com/home/start/twominutetutorials/tmt5p1 –

Respuesta

8

¡He conseguido que funcione! Estoy publicando mis pensamientos aquí porque me costó encontrar la respuesta después de horas de búsqueda en la web.

Los pasos importantes son:

  • Asegúrese ChildBrowser funciona correctamente
  • instalación de una función que va a escuchar a la página cambia window.plugins.childBrowser.onLocationChange = function(fooUrl) { console.log(fooUrl); }
  • Construir la URL con la cadena de consulta como se describe en this tutorial
  • Señale ChildBrowser a la dirección URL
  • Cuando el usuario inicia sesión, podrá o extraer el token de sesión de fooUrl

Si todavía no sabe cómo hacer esto, echar un vistazo a this Android app. (No es mucho de código, y puede parecer abrumador, así que sólo sugieren que para este como último recurso)

4

Google no permitirá llevar a cabo la autenticación directa por el manejo de las credenciales de usuario directamente. En cambio, Google quiere que realices un protocolo de autenticación, generalmente OAuth 2.0. Otros protocolos de autenticación populares de los que puede hablar son OpenID 1.0, 2.0, OpenID Connect, SAML 2.0, ID-FF, etc. Estos protocolos redireccionarán al usuario al proveedor de identidad (Google, en este caso), y lo enviarán de regreso con un aserción que puede utilizar para confiar en el usuario. Con las API, como Google, haría uso de la funcionalidad de autorización de OAuth, que le proporciona un token que puede usar con todas las API de Google después de la autenticación.

Con PhoneGap y las aplicaciones móviles, las cosas son un poco diferente a la típica configuración de OAuth.

En su caso, el navegadorestá en un ambiente controlado y su aplicación, y es posible que

  • seleccione para redirigir al usuario a Google Autorización punto final mediante la vista principal,
  • seleccione para abrir a ChildBrowser con el punto final de Autorización de Google, para no perder ningún estado en su aplicación.
  • para abrir de alguna manera Safari u otro navegador con el punto final de autorización, y registrar un controlador de esquema personalizado, para redirigir al usuario a su aplicación después de la autenticación.

Estos ejemplos se mencionan vagamente en las especificaciones de OAuth 2.0, pero no hay ayuda sobre cuál es la mejor u óptima en un caso de uso específico. A menudo, la mejor opción posible no es perfecta (desde la perspectiva del usuario).

Recientemente escribí un tutorial sobre cómo hacer que esto funcione con Phonegap y ChildBrowser para iOS.