您好我想明确覆盖客户经理的现有AuthToken。我尝试使用此代码段
Log.d(TAG, "finishRenewal");
AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType(AccountGeneral.ACCOUNT_TYPE);
for(Account ac : accounts){
manager.setAuthToken(ac, AccountGeneral.ACCOUNT_TYPE, authToken);
}
但我似乎无法检索AuthToken。它总是给出以前的AuthToken。
BTW:我正在通过此次电话
检索令牌 AccountManagerFuture<Bundle> future = mAccountManager
.getAuthTokenByFeatures(accountType, authTokenType, null, act, null, null,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
Bundle bnd = null;
try {
bnd = future.getResult();
final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
final String userName = bnd.getString(AccountManager.KEY_ACCOUNT_NAME);
Log.d(TAG, "GetTokenForAccount Bundle is " + bnd);
if (listener != null) {
listener.onAccountAcquired(userName, authtoken);
}
} catch (Exception e) {
e.printStackTrace();
if (listener != null) {
listener.onFail();
}
}
}
}
, null);
答案 0 :(得分:1)
我的猜测是,第二个代码段中authTokenType
的值与第一个代码段中的AccountGeneral.ACCOUNT_TYPE
不等。
当您设置身份验证令牌时,您的代码会将AccountGeneral.ACCOUNT_TYPE
作为AuthTokenType传递。设置authtoken时,请确保使用正确的AuthTokenType,而不是帐户类型。
AuthTokenType通常与帐户类型不同,因为它们标识不同的内容。