2012-02-08 105 views
6

使用Android的AccountManager獲取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方法,雖然它並非總是如此。

在此先感謝。 另外我真的不知道何時使令牌無效。一天一次?每次啓動?或者是指示符爲空的令牌,即令牌必須無效,儘管它會在下一次調用時返回有效的令牌。

回答