我在Laravel 5.2中使用Google Drive API。我可以授予文件访问Gmail的特定电子邮件ID的权限。但是,我想公开授予所有具有文件链接的访问权限。
我已经尝试过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);
}
}
答案 0 :(得分:0)
对于Google云端硬盘v2,请使用alternateLink
属性。在Google Drive v3中,使用webViewLink
属性。
也按照此link:
在我使用PHP Api v3的情况下,要使该链接为非空链接,必须定义您请求此字段,并且如果您拥有正确的权限:
是这样的:
$file =self::$service->files->get("1ogXyGxcJdMXt7nJddTpVqwd6_G8Hd5sUfq4b4cxvotest",array("fields"=>"webViewLink"));