¿Puedo usar el AccountManager de Android para obtener el token de acceso de OAuth para AppEngine?

Tengo un cliente Android para mi servidor AppEngine, ambos con cuentas de Google. Me gustaría usar AccountManager para obtener accessToken para OAuth. Hasta ahora estoy usando ClientLogin, pero me gustaría cambiar a OAuth.

Configuración de OAuth en AppEngine es fácil – He seguido este artículo . Pero el lado del cliente es un misterio, en particular, no sé qué utilizar para el ámbito, en AccountManager términos authTokenType . Para ClientLogin, estoy usando "ah" para authTokenType . Pero ¿qué pasa con OAuth?

A partir de hoy, puedes usar la API de Google Play Services en android para realizar la autenticación Oauth 2.0 en android. A continuación, puede utilizar el método descrito por @nivco para obtener el userinfo en appengine. No he hecho esto todavía, pero planeo hacer exactamente lo que estás hablando.

https://developers.google.com/android/google-play-services/authentication

No estoy seguro de lo que está intentando hacer es posible a través del App Engine OAuthService utilizado en el artículo al que se está refiriendo. También se afirma que AppEngine OAuthService sólo soporta OAuth 1, pero Android sólo soporta OAuth 2 🙂 por lo que está atornillado.

Si quieres hacer cross Android – App Engine autenticación, lo que yo haría es:

  1. En Android: obtenga un token de acceso para la API UserInfo (ámbito = https://www.googleapis.com/auth/userinfo.email y https://www.googleapis.com/auth/userinfo.profile ) desde AccountManager.
  2. Pase el token de acceso a App Engine en un parámetro de URL de la solicitud que está realizando desde Android a AppEngine (asegúrese de usar HTTPS para evitar la interceptación!).
  3. En el lado de App Engine: use el token de acceso para leer la identidad del usuario utilizando la API de UserInfo . Esto es básicamente utilizando OpenID Connect!
  4. A continuación, puede utilizar la información que obtuvo de la API UserInfo para autenticar al usuario. El correo electrónico y el ID de usuario que obtendrá de la API de UserInfo es equivalente al correo electrónico y el ID de usuario que obtendría de UserService de AppEngine => ¡puede confiar en él!

PS: Describí la obtención de fichas OAuth 2 usando el AccountManager de Android en este artículo . Fue escrito pre-Ice Cream Sandwich pero estoy saltando sigue siendo válido. Básicamente, el authTokenType debe ser oauth2:{scopes} , por ejemplo, oauth2:https://www.googleapis.com/auth/tasks para la API de tareas. Puede haber algunas maneras mejores de hacer esto ahora.

  • ¿Por qué no funciona gmail oauth en mi aplicación para Android?
  • Dev Android: la URL de devolución de llamada no funciona ... (0_o)
  • Android Tumblr oAuth Confusión
  • Oauth_callback en Android
  • ¿Alguien puede explicar OAuth?
  • Java.lang.NoClassDefFoundError: oauth.signpost.commonshttp.CommonsHttpOAuthConsumer android
  • OAuth / OpenID - ¿Qué debo usar?
  • Mejor Recurso de Aprendizaje para OAuth
  • ¿Cómo / dónde almacenar el token de actualización en Android?
  • Uso de Android AccountManager para la autorización OAuth2 de terceros
  • Android: OAuth Callback de LinkedIn no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.