В Google Обозреватель API Я попытался указать правильный идентификатор файла в drive.permissions.create. Я установил для supportTeamDrives значение true и тело запроса с ролью: читатель и типом: кто-нибудь. Это просто дает мне ошибку:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidLinkVisibility",
"message": "Bad Request. User message: \"\""
}
],
"code": 400,
"message": "Bad Request. User message: \"\""
}
}
То же самое происходит в моем PHP-коде. Вот насколько я могу приблизиться, это выглядит правильно для меня:
...
$userPermission = new Google_Service_Drive_Permission( array(
'type' => 'anyone',
'role' => 'reader',
));
$service->permissions->create( $imageId, $userPermission, array(
'supportsTeamDrives' => true,
));
...
Не могу ничего найти по ошибке:
invalidLinkVisibility
Что мне нужно сделать, так это временно установить разрешение на 20-50 файлов в папке как «общедоступное» (т.е. любой, у кого есть ссылка, может его видеть), потому что я отправляю webContentLink (или webViewLink, я не понял какой из них мне нужно использовать еще) в другой API, чтобы загрузить туда изображения. Как только это будет сделано, я хотел бы удалить публичный доступ. Одним из вариантов было бы установить разрешение (с рекурсивным публичным доступом) для папки на публичный доступ. Я просто не могу понять, как изменить (точнее добавить) права доступа к файлу в API Google Диска, в PHP.
Альтернативой этому может быть какой-то способ получить изображение через URL-адрес с включенным токеном, например.
$source = $files.$image1;
$context = stream_context_create( array(
'https' => array(
'header' => 'Authorization: Bearer '. $token
)
) );
$image = file_get_contents( $source, false, $context );
Где $token — это токен авторизации для аутентификации службы, $files — это https://drive.google.com/a/file/d/, а $image1 — идентификатор файла. Конечно, при попытке сделать это я должен сначала войти в свою учетную запись Google, что не сработает, поскольку у меня будет другой API, вызывающий эти ссылки и публикующий контент в другой службе. Есть ли способ заставить это работать? Таким образом, мне не пришлось бы беспокоиться о правах доступа к файлам (назад и вперед).