我开发了一个Python应用程序来访问GDrive,现在我希望在gdrive上更改任何文件时收到通知。 具体来说,我对移动/重命名,删除,下载和上传事件感兴趣。我看到Google提供了2个工具:
push notifications,但看起来这仅限于通知特定文件或目录的更改,如here所示。
REST changes API,但AFAIU我应该每隔X秒轮询一次Google服务器。
这对我来说都不是最佳选择,因为我需要有关gdrive上发生的所有文件系统相关事件的全局通知。还有替代品吗?我知道DropBox supports this。
答案 0 :(得分:0)
如果您的应用只需要收到有关更改的通知,则此blog中建议的更好方法是让您的应用订阅用户驱动器的更改,并在发生更改时收到通知。
假设您的应用托管在具有my-host.com
域的服务器上,推送通知应该发送到HTTPS网络挂钩https://my-host.com/notification
:
String subscriptionId = UUID.randomUUID().toString();
Channel request = new Channel()
.setId(subscriptionId)
.setType("web_hook")
.setAddress("https://my-host.com/notification");
drive.changes().watch(request).execute();
有了这个,只要订阅处于有效状态,Google云端硬盘就会在https://my-host.com/notification
触发网络勾回调。然后,应用程序可以查询更改源以从上一个同步点赶上:
changes = service.changes().list()
.setStartChangeId(lastChangeId).execute();
如前所述,如果您有兴趣使用此新功能,请参阅documentation。您可以使用Push Notifications Playground查看推送通知,并在Github查看来源。