Android AccountManager 需要覆盖 AuthToken
Android AccountManager needs to overwrite AuthToken
您好,我想明确覆盖客户经理现有的 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。
顺便说一句:我正在通过此调用检索令牌
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);
我的猜测是第二个代码片段中 authTokenType
的值不等于第一个代码片段中的 AccountGeneral.ACCOUNT_TYPE
。
当您设置授权令牌时,您的代码将 AccountGeneral.ACCOUNT_TYPE
作为 AuthTokenType 传递。设置 authtoken 时,请确保使用正确的 AuthTokenType,而不是帐户类型。
AuthTokenType 通常与帐户类型不同,因为它们标识不同的东西。
您好,我想明确覆盖客户经理现有的 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。
顺便说一句:我正在通过此调用检索令牌
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);
我的猜测是第二个代码片段中 authTokenType
的值不等于第一个代码片段中的 AccountGeneral.ACCOUNT_TYPE
。
当您设置授权令牌时,您的代码将 AccountGeneral.ACCOUNT_TYPE
作为 AuthTokenType 传递。设置 authtoken 时,请确保使用正确的 AuthTokenType,而不是帐户类型。
AuthTokenType 通常与帐户类型不同,因为它们标识不同的东西。