Файл создан с другим владельцем, и я не могу удалить его Google Drive API

#javascript #permissions #google-drive-api

#javascript #разрешения #google-drive-api

Вопрос:

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

  1. есть ли способ разрешить пользователю удалять файл, который ему не принадлежит?
  2. есть ли способ убедиться, что я являюсь владельцем созданного мной ярлыка?

Я создал оба файла, используя drive.files.create() метод (завернутый).

 const resource = {
    parents: [folderId],
    name: title,
    properties: metadata,
  }

const res = await drive.filesInsert({
    resource,
    media: {
      mimeType,
      body,
    },
    fields: 'id, parents'
});

const shortcutMetadata = { ...resource };
    shortcutMetadata.parents = [parent];
    shortcutMetadata.mimeType = 'application/vnd.google-apps.shortcut',
    shortcutMetadata.shortcutDetails = {
        targetId: id
      }

const res = await drive.filesInsert({
    resource: shortcutMetadata, fields: 'id, parents'
});

  

и это ошибка:

 { 
  “reason”: “forbidden”,
  “message”: “Insufficient permissions for this file”
}
  

Комментарии:

1. Вы создали файл на диске пользователя или на общем диске? Можете ли вы показать свой код для создания файла?

2. Итак, вы являетесь владельцем файла, в то время как другой пользователь является владельцем ярлыка, но это не позволяет вам авторизоваться для удаления файла? Пожалуйста, покажите ваше полное сообщение об ошибке и ваш запрос на удаление файла, еще раз, пожалуйста, укажите, находится ли файл на общем диске.

3. @ziganotschka по-видимому, ярлык всегда принадлежит владельцу папки, а не тому, кто ее создал. Я могу «исправить» это, передав права собственности на папку пользователю, которого я использую для действий API, но у меня есть лучшее решение

Ответ №1:

Из документации

ярлык создается на моем диске текущего пользователя, а ярлыки создаются только для файлов или папок, к которым у текущего пользователя есть доступ.

  • Наличие доступа не обязательно означает, что вы являетесь владельцем.
  • Вы можете сделать другого пользователя редактором файла, и в этом случае этот пользователь сможет создать ярлык на своем собственном диске.
  • Вы также можете изменить владельца программно с помощью Permissions:Create, что, в моем понимании, является тем, что вы хотели в первую очередь.

Комментарии:

1. в моем случае владельцем ярлыка является владелец папки, а не пользователь, который ее создал. почему это происходит?

2. Может быть, потому, что вы аутентифицируетесь как владелец папки при запуске вашего кода?

3. это то, что я говорю. я не

4. Я не уверен, правильно ли я вас понял, как вы аутентифицируете свой код? Как учетная запись службы или как пользователь? Если как пользователь — от имени какого пользователя вы подтверждаете выполнение? Как владелец файла или как редактор, которому вы хотели бы стать владельцем ярлыка? Я предлагаю вам протестировать ваш запрос с помощью Try this API , аутентифицируясь как пользователь, которого вы хотели бы видеть владельцем ярлыка.