1

我正在研究谷歌驱动器 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."
}

我知道我不是所有者,所以我不能删除文件。有没有办法更新我的角色或创建超级用户角色并从驱动器中删除文件。提前致谢。

4

3 回答 3

2

用户对此文件没有足够的权限。

确切地说,用户没有删除文件的权限。除了联系文件的所有者并让他们删除它之外,您实际上无能为力。

我不知道您如何将这些文件上传到这个中心位置,但一个想法是使用服务帐户上传文件。然后它将拥有这些文件。然后,当您要删除它们时,您可以让服务帐户用户删除文件,而不是依靠当前登录的用户来删除文件。

于 2018-11-23T12:08:12.883 回答
1

我知道我不是所有者,所以我不能删除文件

你是绝对正确的。文件的删除和丢弃只能由所有者完成。

不过有一种解决方法。您可以从文件中删除父 ID。这将从文件夹中删除文件。为此,请使用Files: Update endpointremoveParents的参数。当您通过网络界面从共享文件夹中“删除”文件(您不拥有)时,这也是 Google Drive 所做的事情。

此方法的一个警告是,文件大小仍将计入拥有用户的 Google Drive 存储限制。

于 2018-11-25T21:30:51.743 回答
0

在我看来,您的服务范围可能不足以删除文件/文件夹。

如果您使用 Google_Service_Drive::DRIVE_METADATA,请将其删除。然后使用 Google_Service_Drive::DRIVE 范围。

于 2019-09-24T08:19:20.153 回答