我正在使用Google Drive API。我需要删除一些其他用户上传的文件。我们正在使用通用文件夹上传文件。我需要从上传的位置下载和删除文件。
代码。
do{
FileList result2 = service.files().list().setFields("nextPageToken, files(id, name,parents,mimeType,owners)").setPageToken(pageToken).execute();
for (File file : listFiles) {
downloadFile(file)//This method download files. ITs working file
service.files().delete(file.getId()).execute();
pageToken = result2.getNextPageToken();
}
}while (pageToken != null);
service.files().delete(file.getId()).execute();
throwing exception
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The user does not have sufficient permissions for this file.",
"reason" : "insufficientFilePermissions"
} ],
"message" : "The user does not have sufficient permissions for this file."
}
我知道我不是所有者,所以无法删除文件。有没有一种方法可以更新我的角色或创建超级用户角色并从驱动器中删除文件。 预先感谢。
答案 0 :(得分:1)
用户对该文件没有足够的权限。
完全表示用户无权删除文件。除了联系文件所有者并让他们删除文件外,您实际上无能为力。
我不知道您如何将这些文件上传到此中心位置,但是一个想法是使用服务帐户上传文件。然后它将拥有文件。然后,当您要删除它们时,可以让服务帐户用户删除文件,而不是依靠当前登录的用户来删除文件。
答案 1 :(得分:0)
我知道我不是所有者,所以我无法删除文件
您绝对是正确的。文件的删除和回收只能由所有者完成。
但是有一种解决方法。您可以从文件中删除父ID。这将从文件夹中删除文件。为此,请使用Files: Update endpoint的removeParents
参数。当您通过网络界面从共享文件夹中“删除”您不拥有的文件时,这也是Google云端硬盘的工作。
此方法的一个警告是文件大小仍将计入所属用户的Google云端硬盘存储空间限制。
答案 2 :(得分:0)
我认为,您服务的范围可能不足以删除文件/文件夹。
如果您使用Google_Service_Drive :: DRIVE_METADATA,请将其删除。然后使用Google_Service_Drive :: DRIVE作用域。