Ошибка удаления файла Google Диска. У пользователя недостаточно прав для этого файла

Я работаю над 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."
}

Я знаю, что я не владелец, поэтому я не могу удалять файлы. Есть ли способ обновить мою роль или создать роль суперпользователя и удалить файлы с диска. Заранее спасибо.


person Google Drive Api User    schedule 23.11.2018    source источник


Ответы (3)


У пользователя недостаточно прав для этого файла.

Означает именно то, что у пользователя нет прав на удаление файла. Вы действительно ничего не можете с этим поделать, кроме как связаться с владельцем файла и попросить его удалить его.

Я не знаю, как вы загружаете эти файлы в это центральное расположение, но идея заключается в том, чтобы использовать учетную запись службы для загрузки файлов. Тогда он будет владеть файлами. Затем, когда вы хотите удалить их, вы можете попросить пользователя учетной записи службы удалить файл, а не полагаться на пользователя, который в данный момент вошел в систему, для удаления файла.

person DaImTo    schedule 23.11.2018
comment
Учетная запись службы также не имеет права на передачу права собственности, даже если она является владельцем. - person F. Vosnim; 02.07.2020
comment
Если учетная запись службы является владельцем файла, она может предоставлять другим доступ к файлу, а также может передавать право собственности, учетная запись службы является таким же пользователем, как и любой другой пользователь. - person DaImTo; 02.07.2020
comment
@DalmTo Работает с файлами приложений Google и не работает с файлами, которые вы загрузили через учетную запись службы. Я загрузил wav-файл и не смог передать право собственности stackoverflow.com/questions/62699404/ - person F. Vosnim; 03.07.2020
comment
Учетная запись службы может демонстративно передать право собственности на файл У меня было приложение, которое делало это много лет назад. - person DaImTo; 03.07.2020

Я знаю, что я не владелец, поэтому я не могу удалять файлы

Вы абсолютно правы в этом. Удаление и удаление файлов может выполнять только владелец.

Однако есть один обходной путь. Вы можете удалить родительский идентификатор из файла. Это удалит файл из папки. Для этого используйте параметр removeParents в разделе Files: Update endpoint. Это также то, что делает Google Диск, когда вы «удаляете» файл (который вам не принадлежит) из общей папки через веб-интерфейс.

Одним из предостережений этого метода является то, что размер файла по-прежнему будет учитываться в ограничении хранилища Google Диска владельца.

person Finn    schedule 25.11.2018
comment
Что, если я являюсь владельцем файла и получаю ту же ошибку при попытке передать право собственности другому аккаунту? - person F. Vosnim; 02.07.2020

На мой взгляд, возможно, возможностей вашего сервиса недостаточно для удаления файла/папки.

Если вы используете Google_Service_Drive::DRIVE_METADATA, удалите его. Затем используйте область действия Google_Service_Drive::DRIVE.

person Saruul-Ulzii    schedule 24.09.2019