2012-03-28 18 views
10

Después de leer todo tipo de publicaciones de Stackoverflow y varios documentos, incluyendo algunos en el sitio http://code.google.com/p/google-api-java-client/, me siento completamente confundido. Entonces, ¿alguien me puede explicar la mejor manera de lograr lo siguiente:Android: Google SSO - OAuth o AccountManager? ¿O ambos?

  1. Permitir que el usuario apruebe mi aplicación. Realmente no me importa si esto se hace accediendo a su cuenta de Google registrada en cuentas/configuraciones y aprobando la aplicación (forma preferida) o llamando a la página de autenticación de Google OAuth
  2. Obtenga el token de autenticación que se puede usar para comunicarse con Google Lector

Otro punto de confusión para mí: pude aprobar mi aplicación mediante AccountManager y obtener el token de autenticación, pero no funcionará con Google Reader. Entonces, ¿cómo equilibrar la información de cuenta de AccountManager y OAuth? ¿Todavía tengo que hacer algo con OAuth después de que el usuario lo apruebe en la configuración de AccountManager?

ejemplo

Código sería agradable, pero un aspecto más de una explicación clara de cómo todas estas piezas están relacionados entre sí

+0

¿Qué quiere decir con "aprobar" su aplicación? ¿Pretende usar su identidad en su aplicación (OpenID) o hacer que su aplicación acceda a los datos de su usuario con Google (OAuth)? – Anirudh

+0

Pregunta justa. En este caso particular, quiero poder registrar al usuario en su cuenta de lector de Google usando la cuenta de Google registrada de su teléfono. De forma alternativa (si eso no es posible), no me importaría (pero preferiría no hacerlo) redirigir al usuario inicialmente a la página de aprobación de la aplicación Google OAuth. – Bostone

+0

La recuperación real de la información de la cuenta de Google Reader la realiza el servidor remoto, la aplicación solo necesita pasar el token de autenticación correspondiente – Bostone

Respuesta

6

El administrador de cuenta le permite obtener tokens de autenticación para diferentes servicios. Hay diferentes implementaciones concretas bajo el capó: ClientLogin, OAuth, etc. Para que funcione con, digamos, Google Reader, debe pasar el tipo de token apropiado. Para ClientLogin, esos son cadenas cortas como "ah" (App Engine) y "reader" (Google Reader). Para OAuth, son ámbitos, según lo define cada servicio. Entonces, ¿qué está pasando como el parámetro authTokenType?

Obtener el token es asíncrono, ya que puede implicar el acceso a la red. Si hay un token en caché, se devolverá de inmediato, si es válido. El flujo no es tan complicado, mira el enlace de arriba para ver la bonita imagen. Una vez que obtienes el token, lo pones en el encabezado apropiado y usas el API según la especificación.

+0

Como dije, preferiría que el usuario firmara con su cuenta de Google existente. ¿Hay alguna documentación sobre estas "cuerdas cortas" que describa lo que se admite? – Bostone

+0

El término correcto es en realidad 'nombre del servicio'. Esta no es una lista completa, pero aquí hay más: http://code.google.com/apis/gdata/faq.html#clientlogin. Para obtener información general sobre cómo autenticarse en los servicios de Google, puede comenzar por aquí: https://developers.google.com/accounts/. Android AccountManger es solo una interfaz para aquellos. –

+0

Gracias Nikolay.Estoy aceptando su respuesta, ya que estoy bastante seguro de que puedo descubrir el resto en este momento. – Bostone

4

He aquí una clase de entrenamiento de Android en AccountManager que podría ayudar:

http://developer.android.com/training/id-auth/authenticate.html

Además, utilizar AccountManager con Google Reader es actualmente la única forma preferida de hacerlo. Dirigir a los usuarios a una página de inicio de sesión con WebView no es muy seguro y, según lo que sé, las API de Google no admiten el uso de un navegador (tampoco estoy seguro de si Reader usa OAuth2 o no).

+0

Enlace útil, gracias – Bostone

Cuestiones relacionadas