2011-10-03 10 views
5

Estoy escribiendo un cliente de GMail para Android. Quiero enumerar todas las cuentas de GMail en un ListView. Cuando el usuario hace clic en un elemento, quiero que el programa recupere la contraseña de la cuenta correspondiente.android get gmail nombre de usuario y contraseña del administrador de la cuenta

Sin embargo, aparece un SecurityException:

java.lang.SecurityException: caller uid 10107 is different than the authenticator's uid 

Este es mi código:

AccountManager accountManager = AccountManager.get(context); 

this.username = account.name; 
this.password = accountManager.getPassword(account); //this is where I get the exception 

tengo todos estos permisos en AndroidManifest.xml:

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission> 
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission> 
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission> 
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

Según Android reference , el único permiso necesario debe ser MANAGE_ACCOUNTS.

¿Cuál es el problema de mi código?

Respuesta

4

Puede obtener un authtoken, pero no puede obtener las credenciales reales de los usuarios. Los acreedores en realidad solo son accesibles por la aplicación que los creó. De la documentación del método (el énfasis es mío) getPassword:

Este método requiere que la persona que llama para mantener las AUTHENTICATE_ACCOUNTS permisos y tener la misma UID que autenticador de la cuenta.

+1

Suena bien saber esto. Creo que estoy más seguro en este momento. Gracias Kurtis. – b101101011011011

Cuestiones relacionadas