gpt4 book ai didi

android - AccountManager 似乎返回了错误的 authToken

转载 作者:行者123 更新时间:2023-11-29 00:46:38 24 4
gpt4 key购买 nike

我正在使用新 API 开发 Google Tasks 应用程序,但无法获得工作授权。我正在使用 Android AccountManager 获取 authToken,奇怪的是我收到一条错误消息,指出我使用了错误的凭据:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

transport = AndroidHttp.newCompatibleTransport();
transport.defaultHeaders = new GoogleHeaders();

gotAccount(false);
}

private void authenticated(String authToken) {
((GoogleHeaders) transport.defaultHeaders).setGoogleLogin(authToken);
Tasks service = new Tasks(transport, new GsonFactory());

try {
TaskLists taskLists = service.tasklists.list().execute();
} catch (Exception e) {
handleException(e);
}

}

private void gotAccount(final AccountManager manager, final Account account) {
new Thread() {

@Override
public void run() {
try {
final Bundle bundle = manager.getAuthToken(account, AUTH_TOKEN_TYPE, true,
null, null).getResult();
runOnUiThread(new Runnable() {

@Override
public void run() {
if (bundle.containsKey(AccountManager.KEY_INTENT)) {
Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);
int flags = intent.getFlags();
flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK;
intent.setFlags(flags);
startActivityForResult(intent, REQUEST_AUTHENTICATE);
} else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
authenticated(bundle.getString(AccountManager.KEY_AUTHTOKEN));
}
}

});
} catch (Exception e) {
handleException(e);
}
};
}.start();
}

private void gotAccount(boolean tokenExpired) {
AccountManager manager = AccountManager.get(this);
Account account = manager.getAccountsByType("com.google")[0];
if (tokenExpired) {
manager.invalidateAuthToken("com.google", mAuthToken);
}
gotAccount(manager, account);
}

我尝试使用 HttpRequestInitializer 并在 HttpExecuteInterceptor 中应用 authToken 而不是使用(已弃用)HttpTransport.defaultHeaders 但是那也不管用。

new Tasks(transport, initializer, new GsonFactory());

我做错了什么?我的凭据显然是正确的,GMail 工作正常。

最佳答案

我发现了问题:我使用的是 authTokenType goanna_mobile,这是我在另一个应用程序中找到的。尽管 AccountManager 要求我允许我的应用程序访问 Google Tasks,但它是错误的 authTokenType。

对于 Google 日历,正确的是 cl

关于android - AccountManager 似乎返回了错误的 authToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com