Google drive api 通过googledriveapi获取共享链接

Google drive api 通过googledriveapi获取共享链接,google-drive-api,Google Drive Api,我正在使用Google Drive开发一个应用程序。我希望用户能够通过链接共享文件,将权限设置为any和withLink,如中所述 但是,我不知道该共享什么链接。当我在Google Drive浏览器界面中共享文件时,我会看到共享的链接,格式如下: 此格式的链接不是文件资源对象的一部分,也不是从设置权限的http调用返回的。我希望有人能向我解释如何通过REST api获取此链接?您可以使用文件资源中的alternateLink属性来获取可共享的链接,以便在相关的Google编辑器或查看器中打开文

我正在使用Google Drive开发一个应用程序。我希望用户能够通过链接共享文件,将权限设置为
any
withLink
,如中所述

但是,我不知道该共享什么链接。当我在Google Drive浏览器界面中共享文件时,我会看到共享的
链接,格式如下:


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

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

更新
[使用API V3](建议使用
webViewLink
属性。

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

比如说:

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

要实际启用链接共享,请使用:

drive.permissions.create({
文件ID:“…”,
请求主体:{
角色:'读者',
键入:“任何人”,
}
});
使用以下方法获取
webLinkView
值:

const webViewLink=wait drive.files.get({
fileId:file.id,
字段:“webViewLink”
})。然后(响应=>
response.data.webViewLink
);

下面是一个关于如何获取WebViewLink文件属性(又称文件编辑链接)的实用示例:

请注意,您应该加载文件,指定要带哪些字段(在本例中为
webViewLink
)。如果不这样做,则只有
id
name
可用

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

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

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

setRole()和
setType()的可能值
可以在这里找到:

谢谢你的链接。我对如何根据驱动应用程序共享的意图创建此文件对象感到有点困惑?
aleternateLink
在Google drive api v3中不再可用。对于Google drive api v3,请使用Google的
webViewLink
属性。我也使用api v3(php)。我确实在API的响应中得到了
webViewLink
。但以匿名方式打开该链接会将我带到一个登录屏幕。在文件的请求中,是否有一种方法可以有效地说“给我一个世界公开的链接,仅适用于1次访问”?(我将图像存储在一个非web用户的帐户中。)是的,您应该在获得文件ID后更改文件权限。这对我帮助很大。请记住,您可以将该权限应用于整个文件夹,以便webViewLink可以共享每个文件
$sheetsList = $drive_service->files->listFiles([
  'fields' => 'files(id, name, webViewLink, webContentLink)',
]);

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

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