Google Drive API中指向缩略图的永久链接

Pio*_*trK 14 google-drive-api

我正在使用Google Drive API(PHP)将一些照片上传到我的云端硬盘.上载文件时,Google_DriveFile将在响应中返回一个对象以确认成功传输.它包括一个thumbnailLink可通过getThumbnailLinkgetter 访问的字段.其内容可能如下所示:

https://lh4.googleusercontent.com/dqVdU195R4_0ZtWxsJlhW1Fr2K30xa2hH3V1KV4UrTBl9QkhOSR0ZqN9HoB-TjEQv8SIJw=s220

直到今天,我确信链接不会随着时间的推移而自行改变.但是,当我尝试在我的驱动器上显示照片的缩略图时,使用我保存在本地数据库中的缓存地址,我收到403错误 - 您可以在上述链接下看到它.我向API询问了缩略图的当前链接,现在它完全不同了.

它发生在我身上只有一次,但对于多个文件,即我在驱动器上的所有文件突然得到了新的缩略图链接.

有没有办法快速检索文档的缩略图(最好是照片)一些常数值,或确保它不会改变?完美的解决方案是在包含文档的链接下访问缩略图,id而不是可能更改的某些哈希.

小智 53

试试这个: https ://drive.google.com/thumbnail?authuser = 0& sz = w320&id = [ fileid ]其中: - "sz"是一个大小,你可以使用"w"(宽度),如"h" (高度) - [fileid]是文件ID.您可以通过右键单击谷歌驱动器ui在"共享"菜单中找到它

  • @realtebo我刚刚弄清楚我的问题是什么 - 认证范围没有使用获取缩略图的正确权限进行更新.如果您希望获取缩略图,则不能仅使用文件元数据的权限. (2认同)

Vin*_*982 4

我已经阅读了他们提供的 API 文档:

重要提示:每次文件内容发生更改时,缩略图都会失效。提供缩略图时,每次修改内容时上传新的缩略图非常重要。

根据信息,这意味着只有当文件内容被修改时才会生成新的缩略图。但就你而言,这确实很奇怪,内容没有改变,但缩略图改变了。从文档来看,没有可用的批处理过程,但可以使用另一种方法,即Web Hook

根据文档,有一个可用的网络挂钩Files:Watch,即可以跟踪对文件进行的更改的过程。因此,这意味着每次内容更改时都会运行挂钩,并且您可以更改图像缩略图的缓存。

可以发送HTTP请求来请求观看文件变化

POST https://www.googleapis.com/drive/v2/files/fileId/watch
Run Code Online (Sandbox Code Playgroud)

这里fileID指的是加载文件后提供的ID。

在请求正文中,提供具有以下结构的数据:

id     ==>  string  (A UUID or similar unique string that identifies 
            this channel.)

token# ==>  string  (An arbitrary string delivered to the target address with 
                    each notification delivered over this channel).

expiration# => long (Date and time of notification channel expiration, 
                     expressed as a Unix timestamp, in milliseconds.)

 type  ==> string  (The type of delivery mechanism used for this channel. 
                   The only option is web_hook.)

 address => string  (The address where notifications are delivered 
                     for this channel.)

 # Optional.
Run Code Online (Sandbox Code Playgroud)

如果内容发生更改,则会生成新的缩略图,并且挂钩将通知您地址,通过您的地址您可以获取新信息。