1

此代码在“https://www.googleapis.com/auth/drive”范围内运行良好

File folderEntry = drive.files().get("XXXXj0_srDPPGUEtHaVYtZFljMEk").execute();
String driveQuery = "title = '" + "test" + "' and mimeType = 'application/vnd.google-apps.folder' and ";
driveQuery += "'" + folderEntry.getId() + "' in parents";
Files.List request = drive.files().list();
request.setQ(driveQuery);
FileList files = request.execute();

但是,如果我在凭据和 API 客户端访问面板中将范围更改为“https://www.googleapis.com/auth/drive.file”,则会引发错误 500。

500 Internal Server Error {   "code" : 500,   "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"   } ],   "message" : "Internal Error" }

我正在使用服务帐户,父文件夹是由应用程序创建的。

我不明白为什么我不能执行这个查询。

4

2 回答 2

0

我也得到同样的错误。然而,这种解决方法确实得到了我创建的文件夹的所有子项,直到谷歌修复了我认为的查询问题。

ChildList list = service.children().list(FILEID).execute();
于 2013-01-17T22:21:50.030 回答
0

这可能有点晚了,但是......我相信问题会发生,因为当您使用范围https://www.googleapis.com/auth/drive.file运行时,您只能查看您的应用创建的文件。但是,您的查询可能会返回您的身份验证范围之外的元数据。

我也遇到了同样的问题,并设法通过添加DRIVE_METADATA_READONLY 范围来解决它:

credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE_FILE, **DriveScopes.DRIVE_METADATA_READONLY**);
于 2013-06-13T23:13:52.470 回答