公开的Google Drive API共享链接

时间:2018-10-08 09:04:50

标签: php google-drive-api laravel-5.2

我在Laravel 5.2中使用Google Drive API。我可以授予文件访问Gmail的特定电子邮件ID的权限。但是,我想公开授予所有具有文件链接的访问权限。

我已经尝试过webViewLinkalternateLinkwebContentLink,但这些都是空白。

请参阅文件对象的图像输出

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 :(得分:0)

对于Google云端硬盘v2,请使用alternateLink属性。在Google Drive v3中,使用webViewLink属性。

也按照此link

  

在我使用PHP Api v3的情况下,要使该链接为非空链接,必须定义您请求此字段,并且如果您拥有正确的权限:

     

是这样的:

$file =self::$service->files->get("1ogXyGxcJdMXt7nJddTpVqwd6_G8Hd5sUfq4b4cxvotest",array("fields"=>"webViewLink"));