最近推出的 Push Notifications 服务非常酷,看起来比以前必需的轮询有很大改进。
我想知道如何在云端硬盘的共享文件夹中启用监视所有文件。我们正在开发 Drive 监控工具,它保留所有更改的列表并为整个企业 Drive 文件夹启用报告。
我知道我可以在更改提要中使用有关新对象的通知。不幸的是,您无法从 Changes 资源中检测到发生了什么变化。
在查看文件资源时,您会收到通知,说明文件的更改内容(父项、权限、元数据等)。这很好,但是似乎无法为 Drive 中的所有文件注册推送通知处理程序。文档说您始终需要提供 fileId
。这意味着在我们的场景中对数百万个文件发出监视请求(更不用说时不时地更新 Push API channel )。
您是否知道有什么比使用更改通知更合适的方法并检测手动更改的内容(这是相当多的 API 调用,而且执行起来相当慢)。
最佳答案
长话短说,不。
Push Notification 目前只支持监听 Files 和 Changes。您可能知道,Google 云端硬盘中的文件夹是具有特殊 mimeType 的文件。也就是说,您可以通过向文件夹发出 Files.Watch() 请求来监视特定文件夹。但是,它只会告诉您其直接子项的更改,而不是递归地告诉您,这可能不是您想要的。
您可以采用的最佳方法是将所有文件的元数据复制到您的应用程序中,并在发生任何更改时进行比较。我知道这不是很有效,但就目前而言,这是您实现此目标的唯一方法。
如果您问我是否会创建您想要的功能,我说不太可能。推送通知不仅适用于 Drive API。它是为所有 Google API 设计的,可以监视任何 API 资源并检测它们的变化。基本上,当您发出 Files.Watch() 请求时,它会保留 Files.get() 结果的副本,并在任何更改时通知您。这就是为什么 Files.watch 有更多有用的细节的原因。对于 Changes,它会在 Changes.list() 发生变化时告诉您。因此,它无法告诉您比 Changes 资源当前可以做什么更好的事情。从它的设计来看,我认为您想要的功能不会添加到 Drive API。
关于google-app-engine - Google Drive SDK 推送通知 - 查看所有文件的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144094/