2011-10-03 4 views
5

나는 Android 용 Gmail 클라이언트를 작성하고 있습니다. ListView에 모든 GMail 계정을 나열하고 싶습니다. 사용자가 하나의 항목을 클릭하면 프로그램이 해당 계정의 암호를 검색하도록합니다. 이건 내 코드입니다android 계정 관리자로부터 Gmail 사용자 이름과 비밀번호를 받으십시오.

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

:

는 그러나, 나는, SecurityException가 얻을 Android reference에 따르면

<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> 

:

AccountManager accountManager = AccountManager.get(context); 

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

을 나는 모든 이들의 AndroidManifest.xml에 권한이 필요한 권한은 MANAGE_ACCOUNTS 여야합니다.

내 코드의 문제점은 무엇입니까?

답변

4

authtoken을 얻을 수 있지만 사용자는 실제 자격 증명을 얻을 수 없습니다. 실제 creditials는 그들을 만든 응용 프로그램에서만 액세스 할 수 있습니다. 하려면 getPassword 방법 (강조 광산)의 문서에서 :

이 방법은 호출자 권한 AUTHENTICATE_ACCOUNTS를 개최하고 계정의 인증과 동일한 UID를 가질 필요합니다.

+1

소리가 잘 들립니다. 나는 지금 내가 더 안전하다고 생각한다. Kurtis에게 감사드립니다. – b101101011011011

관련 문제