Google 驱动器 android API 无法检索文件内容

Google drive android API unable to retrieve file content

大家好,我计划在 android 那边从我的 google 驱动器中检索一些文档文件,但总是失败:

未找到驱动器项目,或者您无权访问它。

这是我的代码,问题部分是 "EXISTING_FILE_ID "

private static final String EXISTING_FILE_ID = "0BxyOMAFcmxoYTkt6cHZwcUtaNlU";
private static final int REQUEST_CODE = 102;
private GoogleApiClient googleApiClient;
private static final String TAG = "retrieve_contents";

首先:我尝试在 google 驱动器上获取我的共享文档 link 并选择键值示例,0BxyOMAFcmxoYTkt6cHZwcUtaNlU https://drive.google.com/file/d/0BxyOMAFcmxoYTkt6cHZwcUtaNlU/view?usp=sharing

其次:我使用我的 android 端应用程序创建一个文件,并检索了一个 DriveId:CAESABiiHyCcwq2SpVMoAA== 但仍然无法检索文件内容 这个问题让我很困惑几天有人帮助我吗?

从你提到 'EXISTING_FILE_ID' 的事实来看,我假设你指的是 demo code here

因此,要回答上面的“First”这一点:该错误告诉您您正在尝试访问一个文件,该文件不是由您的 Android 创建的应用程序。 GDAA supports only SCOPE_FILE scope,例如只有 Android 应用程序创建的文件才能找到、打开、修改...

名为“Second”的点:您(可能)正在尝试正确访问由您的 Android 应用程序创建的文件,但使用的 ID 不正确。我看到的 ID 是“DriveId”,不同于您应该使用的“ResourceId”()。

最直接的解决办法是通过

把你的DriveId变成ResourceId
 DriveId driveId = DriveId.decodeFromString("DriveId:CAESABii.....");
 String EXISTING_FILE_ID = driveId.getResourceId();

并尝试使用该 ID。

祝你好运

@user2953788 你解决了这个问题吗?我有相同的示例工作,我可以看到 2 个潜在的问题可能会给你提到的错误(你没有粘贴实际的错误日志)

1) 您还没有授予 Google 驱动器访问该应用程序的权限(自从您遵循教程后不太可能) 2) 示例代码中 BaseDemoActivity.java 中的变量 "public static final String EXISTING_FILE_ID" 未更新为您 Google 驱动器中的最新 EXISTING_FILE_ID。每次删除或添加文件时,即使文件名未更改,ID 也会更改。这更有可能导致您的错误。我假设您知道如何找到 Google 驱动器中任何文件的 EXISTING_FILE_ID,如 Google 教程中所述。

祝一切顺利!