我正在使用Google云端硬盘开发应用。我希望用户能够按链接共享文件,将权限设置为anyone
和withLink
,如Google Developers documentation中所述。
但是,我无法弄清楚要分享的链接。当我在Google云端硬盘浏览器界面中共享文件时,我会看到Link to share
格式为:
https://docs.google.com/presentation/d/[...]/edit?usp=sharing
此格式的链接不是文件资源对象的一部分,也不是从设置权限的http调用返回的。我希望有人可以向我解释如何通过REST api获取此链接?
答案 0 :(得分:15)
您可以使用文件资源中的alternateLink
属性获取可以共享的链接,以便在相关的Google编辑器或查看器中打开文件:
答案 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
)。如果您不这样做,那么只有id
和name
可用。
如果您需要调整文件共享设置,请按以下步骤操作:
$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