2011-10-03 16 views
5

Sto scrivendo un client GMail per Android. Voglio elencare tutti gli account GMail in un ListView. Quando l'utente fa clic su un elemento, voglio che il programma recuperi la password dell'account corrispondente.android get gmail nome utente e password dal gestore account

Tuttavia, ottengo un SecurityException:

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

Questo è il mio codice:

AccountManager accountManager = AccountManager.get(context); 

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

Ho tutte queste autorizzazioni in 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> 

Secondo Android reference , l'unica autorizzazione necessaria dovrebbe essere MANAGE_ACCOUNTS.

Qual è il problema del mio codice?

risposta

4

È possibile ottenere un authtoken, ma non è possibile ottenere le credenziali effettive degli utenti. In realtà i crediti sono accessibili solo dall'applicazione che li ha creati. Dalla documentazione del metodo getPassword (sottolineatura mia):

Questo metodo richiede al chiamante di attendere le AUTHENTICATE_ACCOUNTS autorizzazione e di avere lo stesso UID come autenticatore del conto.

+1

Sembra bello saperlo. Penso di essere più al sicuro in questo momento. Grazie Kurtis. – b101101011011011

Problemi correlati