gpt4 book ai didi

android - GoogleAccountCredential + Google Play Services + Refresh Token - 这如何协同工作?

转载 作者:太空狗 更新时间:2023-10-29 14:22:47 25 4
gpt4 key购买 nike

大约 2 周前我发布了一个非常成功的应用程序。但是从昨天开始,用户不断向我发送有关 Drive 无法访问的电子邮件。快速调试后,我发现对 Drive API 的请求现在返回“403 Forbidden”->“Access Not Configured”。

我认为这可能是刷新 token 未正确处理的问题。

我正在使用以下代码(来自 Android Drive SDK 示例):

mCredentials = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
String accountName = PreferenceManager.getDefaultSharedPreferences(this).getString(PREF_DRIVE_NAME, null);
if (accountName != null) {
setupDrive(accountName);
} else {
startActivityForResult(mCredentials.newChooseAccountIntent(), 0);
}

setupDrive(...) 看起来像这样:

 mCredentials.setSelectedAccountName(accountName);
try {
mCredentials.getToken();
} catch (Exception e) {
Log.w(AbstractDriveActivity.class.getSimpleName(), "Error getting auth token", e);
if (e instanceof UserRecoverableAuthException) {
Intent intent = ((UserRecoverableAuthException) e).getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK).addFlags(Intent.FLAG_FROM_BACKGROUND);
startActivity(intent);
} else {
Toast.makeText(AbstractDriveActivity.this, getString(R.string.toast_drive_setup_error),
Toast.LENGTH_SHORT).show();
finish();
}
}
drive = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(),
mCredentials).build();

知道这里可能出了什么问题吗?

据我了解,GoogleAccountCredential 使用 Google Play 服务来管理 OAuth2 流程,您只需提供用户名即可。我错了吗?我错过了什么吗?

顺便说一句:清除应用数据后,再次选择 Google 帐户,一切正常。这就是为什么我认为它与刷新 token 有关。

哥达辰

最佳答案

没有保证,但问题可能来自这里:

mCredentials = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);

我认为此方法已弃用。您应该升级您的 SDK 和环境并将其更改为:

mCredentials = GoogleAccountCredential.usingOAuth2(this, Arrays.asList(DriveScopes.DRIVE));

关于android - GoogleAccountCredential + Google Play Services + Refresh Token - 这如何协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220393/

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