Общедоступная ссылка API Google Drive для общественности - PullRequest
0 голосов
/ 08 октября 2018

Я использую Google Drive API в Laravel 5.2.Я могу предоставить доступ к файлу с определенным идентификатором электронной почты Gmail.Однако я хочу предоставить доступ публично всем, у кого когда-либо есть ссылка на файл.

Я пробовал это webViewLink, alternateLink и webContentLink, но все они пустые.

См. Вывод изображения файлового объекта

enter image description here

    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);
    }
}

1 Ответ

0 голосов
/ 11 октября 2018

Для Google Drive v2 используйте свойство alternateLink.Находясь в Google Drive v3, используйте свойство webViewLink.

Также по этой ссылке :

В моем случае используетсяPHP Api v3, чтобы ссылка была не пустой, вы должны указать, что запрашиваете это поле, и если у вас есть необходимые разрешения:

, что-то вроде этого:

$file =self::$service->files->get("1ogXyGxcJdMXt7nJddTpVqwd6_G8Hd5sUfq4b4cxvotest",array("fields"=>"webViewLink"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...