通过Google Drive API获取共享链接

时间:2013-03-04 12:58:59

标签: google-drive-api

我正在使用Google云端硬盘开发应用。我希望用户能够按链接共享文件,将权限设置为anyonewithLink,如Google Developers documentation中所述。

但是,我无法弄清楚要分享的链接。当我在Google云端硬盘浏览器界面中共享文件时,我会看到Link to share格式为:

https://docs.google.com/presentation/d/[...]/edit?usp=sharing

此格式的链接不是文件资源对象的一部分,也不是从设置权限的http调用返回的。我希望有人可以向我解释如何通过REST api获取此链接?

4 个答案:

答案 0 :(得分:15)

您可以使用文件资源中的alternateLink属性获取可以共享的链接,以便在相关的Google编辑器或查看器中打开文件:

https://developers.google.com/drive/v2/reference/files

答案 1 :(得分:3)

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

这样的事情:

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

答案 2 :(得分:0)

要使用Google Drive API实际上启用链接共享

drive.permissions.create({
  fileId: '......',
  requestBody: {
    role: 'reader',
    type: 'anyone',
  }
});

使用以下方法获取webLinkView值:

const webViewLink = await drive.files.get({
    fileId: file.id,
    fields: 'webViewLink'
}).then(response => 
    response.data.webViewLink
);

答案 3 :(得分:0)

这是一个有关如何获取 WebViewLink 文件属性(又称​​文件编辑链接)的实际示例:

$file = $service->files->get($file_id, array('fields' => 'webViewLink'));
$web_link_view = $file->getWebViewLink();

OR

$sheetsList = $drive_service->files->listFiles([
  'fields' => 'files(id, name, webViewLink, webContentLink)',
]);

$web_link_view = $sheetsList->current()->getWebViewLink();

请注意,您应该加载文件,以指定要携带的字段(在这种情况下为webViewLink)。如果您不这样做,那么只有idname可用。

如果您需要调整文件共享设置,请按以下步骤操作:

$permissions = new \Google_Service_Drive_Permission();
$permissions->setRole('writer');
$permissions->setType('anyone');

$drive_service->permissions->create($file_id, $permissions);

setRole()setType()的可能值可在此处找到:https://developers.google.com/drive/api/v3/reference/permissions/create