На Google API Explorer Я попытался дать правильный идентификатор файла в drive.permissions.create. Я установил для SupportTeamDrives значение true и тело запроса с ролью: reader и type: anybody. Это просто дает мне ошибку:
{
"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 для загрузки изображений туда. Как только это будет сделано, я хотел бы удалить публичный доступ.
Один из вариантов — установить для публичного доступа разрешение (с рекурсивным публичным доступом) на папку. Я просто не могу понять, как я изменяю (или, скорее, добавляю) права доступа к файлу в Google Drive API в 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, вызывающий эти ссылки и размещающий контент в другой службе. Есть ли способ заставить эту работу? Таким образом, мне не придется беспокоиться о правах доступа к файлам (в обратном порядке).
Задача ещё не решена.
Других решений пока нет …