2010-07-25 14 views
21

Soy un desarrollador nuevo en la plataforma Android Googles: mi HTC Desire llegó la semana pasada.OpenID para aplicaciones de Android que requieren Iniciar sesión

Ahora necesito una manera de acceder a mi aplicación existente (Java, actualmente en ejecución en el embarcadero). la aplicación de servidor de seguridad se desarrolla utilizando la primavera 3.0.2

En mi caso, quiero apoyar lo siguiente: Si un usuario ha configurado su teléfono Android con un googlemail/google-cuenta (y la mayoría de los usuarios lo hacen) Quiero usar las credenciales de esta cuenta para iniciar sesión automágicamente en mi aplicación de servidor.

¿Hay algún marco de Android que soporte ese caso de uso? ¿O hay alguna alternativa?

leí: http code.google.com Intl/de-DE/API/cuentas/docs/OpenID.html

cómo lo hacemos inicia sesión con una aplicación en Google App Engine se describe aquí: http://blog.notdot.net/2010/05/Authenticating-against-App-Engine-from-an-Android-app

+1

Podría conseguir que funcione en el final? Estoy tratando de resolver un problema muy similar, y todo lo que pude encontrar fue [esto] (http://stackoverflow.com/questions/9854781/it-is-possible-to-authenticate-a-google-user-the -one-logged-in-on-an-android-d? rq = 1) (busque en los comentarios la solución propuesta), pero creo que esa solución es bastante mala (no quiero pedirle al usuario dame permiso para acceder a sus contactos :() – tnacho

Respuesta

2

No estoy seguro de entender dónde quiere que el usuario inicie sesión.

Tenga en cuenta que no puede suponer qué navegador web se utilizará (navegador predeterminado, móvil de ópera, navegador del fabricante, etc.) Si solo ofrece un sitio web, es responsabilidad del navegador web conocer al usuario. La mayoría de las personas que ya he iniciado sesión en su cuenta de google. Android no tiene ninguna relación aquí.

Si desea que su aplicación Android se conecte a un servicio web sin solicitar un nombre de usuario/contraseña, no puede lograrlo con openID. Sugiero oauth para este caso de uso.

10

Creo que lo que desea es utilizar AccountManager

Para averiguar qué tipo es la cuenta de Google es, usar algo como:

AuthenticatorDescription[] types = mAccountManager.getAuthenticatorTypes(); // 
for (AuthenticatorDescription type : types) { 
    Log.d("account types", type.type); 
} 

luego hacer algo como

AccountManager mAccountManager = AccountManager.get(context); 
Account[] mAccounts = AccountManager.get(context).getAccountsByType("com.google"); 
// Choose which account to use if there are multiple google accounts registered, save to Account mAccount 
AccountManagerFuture<options> response = mAccountManager.getAuthToken(mAccount, type, options, activity, mCallback, mHandler); // define callback and handler yourself for where to return 

Cuando el usuario llega a mCallback en su mHandler, el proceso de inicio de sesión está hecho. El diálogo habitual de inicio de sesión de Google se utilizará si el usuario aún no ha iniciado sesión en su cuenta de Google.

Pruébalo y avísame si te ayudó!

+0

¿Has probado si esto te ayudó? –

+3

Estoy pensando en usar un enfoque similar, pero ¿cómo valida mi webservice el authtoken? – gotosleep

+0

@gotosleep, estoy enfrentando un problema similar aquí ... Todo lo que pude encontrar fue [esto] (http://stackoverflow.com/questions/9854781/it-is-possible-to-authenticate-a-google-user-the-one-logged-in-on -an-android-d? rq = 1) y realmente no me gusta :(, ¿se te ha ocurrido una mejor solución para este problema? ¡Gracias! – tnacho

Cuestiones relacionadas