2012-02-08 6 views
6

Android 계정 관리자를 사용하여 Google 계정에 대한 인증 토큰을 얻는 경우 이상한 행동을합니다.AccountManager.getAuthToken은 빈 문자열을 반환합니다.

앱이 시작되면 getAuthToken을 처음 호출하면 빈 문자열이 포함 된 번들이 토큰으로 반환됩니다. 다음 번에, 나는 똑같은 메소드를 호출하고, 유효한 토큰을 리턴한다.

여기 내 코드입니다 :

public String updateToken(final boolean invalidateToken, final Context c) { 
    String authToken = ""; 
    try { 
     final AccountManager am = AccountManager.get(c); 
     final Account[] accounts = am.getAccountsByType("com.google"); 

     final Bundle bundle = am.getAuthToken(accounts[0], "android", true, 
       null, null).getResult(); 

     authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN) 
       .toString(); 

     if (invalidateToken) { 
      am.invalidateAuthToken("com.google", authToken); 
      authToken = updateToken(false, c); 
     } 
    } catch (final Exception e) { 
     //Just for debugging issues. 
     e.printStackTrace(); 
    } 
    return authToken; 
} 

그것은이 방법은 내 활동의 onCreate 방법으로 호출 할 때 항상 그렇지 않다하더라도 빈 토큰이, 반환되는 것 같습니다.

미리 감사드립니다. 또한 토큰을 무효화 할시기를 알지 못합니다. 하루에 한 번? 시작할 때마다? 또는 빈 토큰이 바로 다음 호출에서 유효한 토큰을 반환하지만 토큰이 무효화되어야한다는 표시기입니다.

답변

관련 문제