2012-02-08 115 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方法,虽然它并非总是如此。

在此先感谢。 另外我真的不知道何时使令牌无效。一天一次?每次启动?或者是指示符为空的令牌,即令牌必须无效,尽管它会在下一次调用时返回有效的令牌。

回答