2015-09-28 90 views
3

我正在使用AccountManager在Android上保存我的應用程序帳戶,並且想要在設備上保存身份驗證令牌。 我每次登錄並執行addAccountExplicitly時都會添加我的應用程序帳戶,但setAuthToken不起作用,直到我再次登錄並再次登錄setAuthToken。 下面是我添加的帳戶和設置的authTokenAndroid setAuthToken第一次不工作

String accountName = authIntent.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
String accountType = authIntent.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE); 
String accountPass = authIntent.getStringExtra(Constants.ACCOUNT_PASS); 
String accntAuthToken = authIntent.getStringExtra(AccountManager.KEY_AUTHTOKEN); 

Account resilincAccount = new Account(accountName, Constants.ACCOUNT_TYPE); 
AccountManager mAccountManager = AccountManager.get(getApplicationContext()); 

boolean accountAdded = mAccountManager.addAccountExplicitly(resilincAccount, accountPass, null); 
mAccountManager.setAuthToken(resilincAccount, Constants.ACCOUNT_TYPE, accntAuthToken); 
mAccountManager.addOnAccountsUpdatedListener(this, null, true); 
setAccountAuthenticatorResult(authIntent.getExtras()); 
setResult(RESULT_OK, authIntent); 

任何一個有任何想法,爲什麼我需要登錄兩次把我的authToken保存的AccountManager代碼?

回答

1

的,你傳遞給setAccountAuthenticatorResult包必須包含以下屬性:

res.putExtra(AccountManager.KEY_ACCOUNT_TYPE, <account_type>); 
res.putExtra(AccountManager.KEY_ACCOUNT_NAME, <user_id>); 
res.putExtra(AccountManager.KEY_AUTHTOKEN, <auth_token>); 
+0

由於其現在的工作 –