Как отключить доступ к файлу по ссылке при помощи 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"}
В общем, немного не правильно расценивал доступ к файлу по ссылке - думал, что это должен быть один параметр, а на самом деле - это отдельный самостоятельный пермишн.
По итогу - решил проблему с доступом - методом
permissions().delete(fileId, permissionId).execute();
Который на вход принимает 2 параметра:
* id файла/папки
* id пермишана
По факту - добавил цикл - проверяющий наличие в id пермишана куска anyone
if (permission.getId().contains("anyone")){
}
Если условие выполняется - то методу удаления передаются 2 необходимых параметра удаляются.
Проверяется наличия куска "anyone" - потому что доступ всем в интернете "anyone", а доступ всем, кто имеет ссылку "anyoneWithLink".