2017-04-08 72 views
0

我对如何操作更改API感到非常困惑。检测Google Drive更改

目前,我只是做GET请求:

https://www.googleapis.com/drive/v3/changes?access_token=**my_token**&pageToken=68485 **Last few additions to the list

我得到:

{ 
"kind": "drive#changeList", 
"newStartPageToken": "68489", 
"changes": [ 
    { 
    "kind": "drive#change", 
    "type": "file", 
    "time": "2017-04-08T00:40:36.141Z", 
    "removed": false, 
    "fileId": "***ID", 
    "file": { 
    "kind": "drive#file", 
    "id": "***ID", 
    "name": "***NAME", 
    "mimeType": "application/vnd.google-apps.folder" 
    } 
    }, 
    { 
    "kind": "drive#change", 
    "type": "file", 
    "time": "2017-04-08T00:41:00.171Z", 
    "removed": false, 
    "fileId": "***ID2", 
    "file": { 
    "kind": "drive#file", 
    "id": "***ID2", 
    "name": "***NAME2", 
    "mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document" 
    } 
    } 
] 

我不知道更改的第一个项目中的变化阵列。

玩过之后,我意识到每次打开文件夹时都会将其添加到更改中,为什么?是否因为元数据正在发生变化,即last-accessed

当预览/打开/下载文件时是否发生同样的事情?

我抛弃了数组中的第二项,但它没有显示任何关于此的内容。

我究竟如何判断正在发生什么变化。我试图检索事件,例如文件更新,创建,删除等

回答

0

改变其在Changes resource representations发现使用官方指定的属性:

{ 
    "kind": "drive#change", 
    "type": string, 
    "time": datetime, 
    "removed": boolean, 
    "fileId": string, 
    "file": files Resource, 
    "teamDriveId": string, 
    "teamDrive": teamdrives Resource 
} 
+0

没有帮助。正在询问如何解释各种事件的数据。类型,类型,时间,FildID文件等都与事件类型无关。删除只在文件被永久删除时才会更改,而不会被删除。 – Tobiq

+0

然而,我发现'v2'改变api会更具表现力,并可能导致使用它,直到我找出发生了什么。 – Tobiq

0

现在,这个可能没有一个完整的答案,但我想分享一些观点。

是因为元数据正在变化,即上次访问?

是的。这有点奇怪,但是,是的,甚至预览文件计数作为一个变化。如果您密切关注云端硬盘的Android应用,则可以看到只是查看照片会将其填充到“最近”标签下。

在API v2中,甚至有一个files.touch()方法,仅用于更新文件的上次访问时间!

我到底该说些什么呢?

changes.list()有一个名为changes[]的属性,它是一个包含更改的列表。您可以使用它来确定更改是否与您有关(如更新,创建,删除)或忽略它是否仅仅是预览。

要补充这一点,而不是连续检查更改,检测更改的更有效方法是使用changes.watch()方法订阅更新的更新,我希望您已经知道这些更新。

关于垃圾。删除并不真正“改变”云端硬盘中的文件。被删除的文件被视为与普通文件类似,但“Trashed”标志除外,这使其不可见。请注意,共享文件仍可由协作者访问,即使它已被删除。但是,如果文件被永久删除,则应该触发更改。

+0

我认为观看更复杂,涉及Web服务器推送通知。而且,别人告诉我投票是我最好的选择。 – Tobiq