Estoy tratando de migrar una aplicación de Android usando OAuth 1.0a a OAuth 2.0. (utilizando la biblioteca de cliente API de Google para Java/Android para mis necesidades de OAuth 2.0).La mejor forma de usar Google API usando OAuth 2.0 en Android
¿Cuál es la mejor solución/preferido para acceder a las API de Google a través de OAuth 2.0 en una plataforma de Android que tiene en cuenta el aspecto de usabilidad también. El usuario debería poder autorizar el acceso de una manera fácil, integrándose a la perfección con mi aplicación de Android.
La aplicación está utilizando actualmente el flujo basado en web OAuth 1.0, donde mi aplicación muestra un navegador para permitir que el usuario autorice el acceso y, mediante un URI de redirección personalizado, mi aplicación puede recuperar un token de acceso. Funciona bastante bien, pero no me gustó el hecho de que tengo que dejar mi aplicación para abrir un navegador para mostrar una página web. Estaba pensando que OAuth 2.0 podría solucionar esto y permitir una mejor experiencia de usuario.
Empecé a mirar el Adroid AccountManager-OAuth2 integration as outlined at Google IO, ya que no involucra un navegador web, y está más estrechamente acoplado con Android, pero simplemente no está funcionando como debería. No está documentado, y no está claro si seguirá siendo una opción viable para el futuro.
Ahora he empezado a investigar el flujo web estándar de OAuth 2.0.
Aquí parecen tener 2 opciones:
configurar el cliente de OAuth 2.0 como una aplicación instalada, y el uso de la urna: IETF: WG: oauth: 2.0: OOB URI de redireccionamiento.
No es una solución muy limpia, ya que no voy a tener mis usuarios copiar y pegar un código en mi aplicación. Esto no es fácil de usar en absoluto.
El Using OAuth 2.0 to Access Google APIs docs menciona que hay alguna manera de sondear el título de la página para analizar la URL, pero también veo un montón de problemas de usabilidad con eso, y realmente no tengo ganas de escribir este tipo de código de plomería . Si existe una biblioteca cliente que pueda hacer eso por mí, me gustaría investigar esto más a fondo, pero por ahora, he descartado esta opción.
configurar el cliente OAuth 2.0 como una aplicación de web, y utilizar un redireccionamiento URI.
Aquí me di cuenta de esquemas no estándar están prohibidos en OAuth 2.0. Antes, era posible utilizar algo como xoauth: // callback, pero eso ya no está permitido. Al configurar un URI de redireccionamiento como http://mysite.com/oauth2/callback, no puedo permitir que Android abra mi actividad cuando la página de Google OAuth 2.0 redirige, a pesar de haber configurado un filtro de intención adecuado para ella. El http://mysite.com/oauth2/callback se muestra simplemente en mi navegador.
A continuación se hace trabajar
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://mysite.com/oauth2/callback"));
startActivity(i);
Pero cuando la página Google OAuth 2 redirige a la misma URL, simplemente se muestra en el navegador.
Incluso si esto iba a funcionar, el usuario todavía se presentaría con una ventana emergente selector (abierta en el navegador o abrir usando mi Actividad Android). Desde una perspectiva de usabilidad, esto tampoco es aceptable.
Estoy buscando una solución mejor que las que se describen aquí.
Saludos, Davy
Acabo de probar [AccountManager] (http://developer.android.com/reference/android/accounts/AccountManager.html) con [muestra de Picasa] (http: //samples.google-api-java- client.googlecode.com/hg/picasa-android-sample/instructions.html?r=default). El video que mencionaste (Google I/O 2011) parece ser un buen punto de partida. Y el ejemplo de Picasa es bueno para mí. En este momento todavía no he trabajado con OAuth 2/AccountManager. Pero al ver la fuente de Picasa, creo que no es tan ofuscante. ¿Lo has probado? –
Debería funcionar, pero en los pre-ICS la pantalla de autorización no es realmente fácil de usar. Enumera los alcances sin procesar de Oauth2. En ICS tiene nombres legibles por humanos. Pero no obtiene la marca (icono de la aplicación) que obtiene con el enfoque basado en la web. https://plus.google.com/u/0/112215288642007559493/posts/Zme5LNLwCDP – ddewaele
Si tu aplicación está disponible en el mercado, ¿podrías indicarme el enlace? Lo siento si esta es una pregunta privada, puedes decir que no, lo entenderé ... –