使用drive.file范围执行查询时出错500

时间:2012-12-03 23:23:41

标签: google-drive-api

此代码运行正常,范围为“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();

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

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

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

我不明白为什么我无法执行此查询。

2 个答案:

答案 0 :(得分:0)

我也得到同样的错误。但是,这个解决方法确实得到了我创建的文件夹的所有子项,直到谷歌修复了我想要的查询问题。

ChildList list = service.children().list(FILEID).execute();

答案 1 :(得分:0)

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

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

credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE_FILE, **DriveScopes.DRIVE_METADATA_READONLY**);