#javascript #permissions #google-drive-api
#javascript #разрешения #google-drive-api
Вопрос:
Я создал файл и ярлык в определенной папке на диске, но по какой-то причине ярлык был создан с другим владельцем (владельцем папки), и из-за этого я не могу удалить файл (несанкционированный).
- есть ли способ разрешить пользователю удалять файл, который ему не принадлежит?
- есть ли способ убедиться, что я являюсь владельцем созданного мной ярлыка?
Я создал оба файла, используя 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 , аутентифицируясь как пользователь, которого вы хотели бы видеть владельцем ярлыка.