此代码运行正常,范围为“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" }
我正在使用服务帐户,而父文件夹是由应用程序创建的。
我不明白为什么我无法执行此查询。
答案 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**);