2017-07-26 109 views
0

我设置了一个频道来检测用户Google云端硬盘上的更改。这部分工作正常,每次发生更改时都会向我的服务器发送POST。例如:Google云端硬盘更改API - 更改ID和文件ID无效

{ kind: 'drive#change', 
    id: '238', 
    selfLink: 'https://www.googleapis.com/drive/v2/changes/238' } 

但是,似乎我在该POST中获得的数据是无效的。 POST中的更改ID总是与实际ID不同。对于上面的例子,如果我尝试GET GET 238,那么回应是'未找到'。但是,如果我使用237,它就可以工作。

另一个让人困惑的事情是文件ID。

How to get ID of changed file on Google Drive - 此答案指出文件ID在标头X-Goog-Resource-ID中。但是,与上面相同,此ID从不匹配实际的文件ID。

有人可以澄清这里发生了什么?我错过了什么?

回答

0

如果你看所有的变化到用户的驱动器使用Changes: watch,注意在请求体返回id是UUID或类似的唯一字符串标识此通道。

您可以使用Changes: list来检索更改的ID和与更改关联的文件的ID。发送HTTP请求与此格式:

GET https://www.googleapis.com/drive/v2/changes 

可选ID参数相比,可以提供在以下(不包括changeIdfileId):

  • startChangeId变化ID开始上市从变化。
  • teamDriveId将从其返回更改的团队云端硬盘。

如果成功,此方法返回一个响应体,其包括所述变化的id和相关联的更改文件的fileId。以下是示例结构:

{ 
    "kind": "drive#changeList", 
    "etag": etag, 
    "selfLink": string, 
    "items": [ 
    { 
     "kind": "drive#change", 
     "id": long, 
     "type": string, 
     "fileId": string, 
     "file": files Resource 
    } 
    ] 
} 

有关更多信息,请参阅Detect Changes

相关问题