我在同步用户谷歌文档到本地数据库的c++桌面应用程序上工作。
应用程序通过发送超文本传输协议请求(使用curl发送超文本传输协议请求)请求https://docs.google.com/feeds/default/private/full将谷歌文档和电子表格检索到本地
在这里,我们将每个谷歌文档、resource_id和其他元信息保存在数据库中,以便下一次同步。
初始同步完成后,从下一次同步开始,发送以下HTTP请求以获取仅更新的资源
https://docs.google.com/feeds/default/private/full?updated-min=Value此处已更新-min是之前更新的XML值-最小值
这里,在处理资源时,基于先前保存的谷歌文档"resource-id“值更新或不更新标识谷歌文档的资源。
如果当前和先前的“resource_id”(从数据库中检索)相同,则将其视为已更新,否则将其视为新的。因为根据谷歌文档API,"resource_id“是谷歌文档的唯一标识符。
实际上,响应应该只包含在“update-min”时间之后修改的新/更新资源。
直到现在(快一年了),这个逻辑一直工作得很好,现在突然在我们的数据库中看到了同一个Google文档的重复条目。(注意到它是在Google Drive引入之后开始出现的)。
此外,同一Google文档的所有重复条目都具有不同的资源id,因此我们将每个条目视为新条目,从而导致相同Google文档的重复条目。
Is "resource_id“是标识资源唯一性的正确属性。
您能帮助我们解决这个问题吗?
关于Subbi Reddy
发布于 2012-06-30 07:36:29
字段resource_id是唯一标识存储在Google Docs中的文件的正确字段,但是,您应该使用Changes提要来同步数据,而不是依赖于updated-min值:
https://developers.google.com/google-apps/documents-list/#detecting_changes_to_resources
此外,最近发布的Drive API版本2实现了相同的功能,我建议更新您的应用程序以使用它,而不是文档列表API:
https://stackoverflow.com/questions/11261001
复制相似问题