我正在尝试将应用程序数据库保存到 Google Drive 上的 Apps 文件夹中。我正在使用 Drive v3 API。几个月前一切正常,数据成功保存到用户 appData 文件夹。但是现在,我收到了 GoogleAuthIOException。我的应用在 Google 控制台中有所有必需的 API 密钥(oAuth、Drive API)这是我的代码:首先,向用户显示一个对话框,以获取他的帐户:mCredential = GoogleAccountCredential.usingOAuth2( getApplicationContext(), Collections.singletonList(DriveScopes.DRIVE_APPDATA)) .setBackOff(new ExponentialBackOff());//...startActivityForResult( mCredential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);//...if (resultCode == RESULT_OK && data != null && data.getExtras() != null) { String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); if (accountName != null) { mCredential.setSelectedAccountName(accountName); }}接下来,我执行 AsyncTask,检查文件夹中的当前文件(删除它,如果需要)并将当前数据库保存在其中。我如何从错误中看到 - 身份验证问题。但我所有的代码都来自 Google 的Java示例。我该如何解决这个错误?理论上,我需要执行一些授权程序,但我没有找到适合我的案例
1 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
好的,我终于找到了解决方案。
首先,当用户在这里选择他的帐户时:
startActivityForResult(
mCredential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
我使用setSelectedAccount(account, "package"), 而不是setSelectedAccountName(accountName)
我在 AsyncTask 中又添加了一个捕获,它创建了一个请求许可的对话框(如官方文档中所述):
try {
fileList = mService.files().list().setSpaces("appDataFolder").execute();
//...
return null;
} catch (UserRecoverableAuthIOException e) {
e.printStackTrace();
errorCode = 1;
startActivityForResult(e.getIntent(), REQUEST_SIGNIN_REQUIRED);
return true;
}
添加回答
举报
0/150
提交
取消