Я использую Google Drive API в Laravel 5.2.Я могу предоставить доступ к файлу с определенным идентификатором электронной почты Gmail.Однако я хочу предоставить доступ публично всем, у кого когда-либо есть ссылка на файл.
Я пробовал это webViewLink
, alternateLink
и webContentLink
, но все они пустые.
См. Вывод изображения файлового объекта
if(isset($options['name']) && isset($options['path'])){
$auth_con = new AuthController();
$client = $auth_con->getClient();
$service = new \Google_Service_Drive($client);
$fileMetadata = new \Google_Service_Drive_DriveFile(array(
'name' => $options['name']));
$content = file_get_contents($options['path']);
$file = $service->files->create($fileMetadata, array(
'data' => $content,
'uploadType' => 'multipart',
'fields' => 'id'
));
$file_id = $file->id;
if(isset($options['to'])){
foreach ($options['to'] as $key => $value) {
drive_permission($service, $value, $file_id);
}
}
}
function drive_permission($service, $email_id, $file_id)
{
$service->getClient()->setUseBatch(true);
try {
$batch = $service->createBatch();
$userPermission = new Google_Service_Drive_Permission(array(
'type' => 'group',
'role' => 'reader',
'emailAddress' => $email_id
));
$request = $service->permissions->create(
$file_id, $userPermission, array('fields' => 'id'));
$batch->add($request, 'anyone');
$results = $batch->execute();
} finally {
$service->getClient()->setUseBatch(false);
}
}