2012-02-08 14 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方法で呼び出されたとき、それは必ずしもそうではないのですが、空のトークンは、返されるようになります。

ありがとうございます。 また、私は本当にトークンを無効にするかわかりません。一日一回?スタートアップのたびに?または、空のトークンがインジケータであること、トークンを無効にしなければならないこと、次の呼び出しで有効なトークンを返すこと。

答えて

関連する問題