¿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?
- Android resto cliente a magento
- Publicar en Drupal usando la cuenta de Facebook a través de Rest Server
- ID de Apple a través de OAuth?
- Hacer Android WebView no almacenar cookies o contraseñas
- Cómo establecer encabezados HttpPost para una solicitud de cliente en Java Android
- El esquema personalizado no parece iniciarse en la intención de la aplicación
- Twitter4J + Android: El desafío de autenticación es una excepción nula
- Cómo configurar el encabezado de autorización (OAuth token) en una solicitud Android OKHTTPClient
- ¿Cómo verificar correctamente la integridad de un token de Google?
- Cómo usar la API de inicio de sesión de Google con Cordova / Phonegap
- Problema con OAuth, Twitter y Android: falla en la comunicación http con el servidor
- Signpost OAuth en Android: ¿cómo volver a crear el consumidor entre dos corridas sucesivas?
- Token de acceso de linkedin para la aplicación android
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:
- En Android: obtenga un token de acceso para la API UserInfo (ámbito =
https://www.googleapis.com/auth/userinfo.email
yhttps://www.googleapis.com/auth/userinfo.profile
) desde AccountManager. - 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!).
- 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!
- 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.
- Parámetros de conexión de baja energía de Bluetooth para Android, iOS y Win8
- ¿Cómo configurar el tema de la aplicación, para evitar transiciones de color erróneas?