VladislavTsepish
@VladislavTsepish
Работаю тестировщиком

Как отключить доступ к файлу по ссылке при помощи Google Drive API?

Есть необходимость менять доступ к файлам на гугл диске при помощи Google Drive API.
Не могу найти внятного объяснения, как переключить доступ к файлу.
Задача - отключать доступ по ссылке вообще, чтобы файлы были доступны только e-mail из списка пошаренных

Если запросить permissions файла, у которого не открыт доступ по ссылке - то возвращается такие параметры:
Permission:[
{"deleted":false,
"displayName":"user name",
"emailAddress":"xxxxxxx@gmail.com",
"id":"111111111111111",
"kind":"drive#permission",
"photoLink":"photoLink.jpg",
"role":"owner",
"type":"user"}
]

В свою очередь - permissions файла с открытым доступом по ссылке - выглядят так:
Permission:[
{"allowFileDiscovery":true,
"id":"anyone",
"kind":"drive#permission",
"role":"reader",
"type":"anyone"},
{"deleted":false,
"displayName":"user name",
"emailAddress":"xxxxxxx@gmail.com",
"id":"111111111111111",
"kind":"drive#permission","photoLink":"photoLink.jpg",
"role":"owner",
"type":"user"}
]

Наличие доступа по ссылке не просто меняет значение одного из имеющихся атрибутов, а вообще добавляет отдельный кусок
{"allowFileDiscovery":true,
"id":"anyone",
"kind":"drive#permission",
"role":"reader",
"type":"anyone"}
  • Вопрос задан
  • 770 просмотров
Решения вопроса 1
VladislavTsepish
@VladislavTsepish Автор вопроса
Работаю тестировщиком
В общем, немного не правильно расценивал доступ к файлу по ссылке - думал, что это должен быть один параметр, а на самом деле - это отдельный самостоятельный пермишн.
По итогу - решил проблему с доступом - методом
permissions().delete(fileId, permissionId).execute();

Который на вход принимает 2 параметра:
* id файла/папки
* id пермишана

По факту - добавил цикл - проверяющий наличие в id пермишана куска anyone
if (permission.getId().contains("anyone")){
}
Если условие выполняется - то методу удаления передаются 2 необходимых параметра удаляются.

Проверяется наличия куска "anyone" - потому что доступ всем в интернете "anyone", а доступ всем, кто имеет ссылку "anyoneWithLink".
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽