2017-04-08 43 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