首页 > 解决方案 > People.Connections.List nextSyncToken 一周后过期

问题描述

我正在开发一个联系人同步解决方案,以使我们的应用程序中的联系人与用户的谷歌联系人保持同步。

我们的代码使用 google people api 最新版本 (v1) 的 php 库。

每个用户一周内一切正常,但在那一周之后,我们得到:

400 - 错误“同步令牌已过期。清除本地缓存并在没有同步令牌的情况下重试调用”。

我现在的问题:

这是您必须在一周后清除所有缓存而没有更改的预期行为,还是我做错了什么?

如果没有更改,是否有可能更新同步令牌?

我已经检查了整个代码,以确保新收到nextSyncToken的代码保存在我们身边并用于下一个增量同步请求。似乎新的同步令牌总是与请求中发送的相同。因此,很明显,如果同步令牌恰好在一周后过期,我们就会收到该错误。我还尝试为每个列表请求设置选项requestSyncTokentrue即使也syncToken设置了 a 。没有成功。每次请求后同步令牌保持不变,没有任何变化。

标签: google-people-api

解决方案


以防万一有人也面临这个问题(syncToken一周后到期,人员/联系人列表没有变化):

我们的解决方案是:

  • 每次syncTokensyncToken.
  • 当您syncToken在增量同步过程中收到一个令牌时,将该令牌与存储的令牌进行比较。如果syncToken是新的,则覆盖旧的及其创建日期/时间。
  • 使用一个连续的过程来检查每个syncToken. 如果一个大约一周大(出于安全原因,我们使用了 6 天)创建一个新的 syncToken(过程见下文)。由于人员 API 不提供诸如日历 API 的监视通道之类的功能,因此您无论如何都需要一些连续的进程,这些进程以固定的时间间隔进行列表调用以实现完整的实时同步 - 所以也许您可以结合这些任务,具体取决于你对这个问题的解决方案?!

创建新 SyncToken 的过程:

  • 在不提供syncToken.
  • 为了增加安全性,请进行一些检查,例如将收到的总人数与旧/当前数据预期的总人数进行比较。并且在一天中几乎没有人进行更改的时间(例如凌晨 2 点)执行此更新过程。
  • 用新的和当前的日期/时间覆盖旧的syncToken和日期/时间。

而已。

但是注意!如果您的syncToken续订过程恰好在进行更改时运行,您仍然可能会错过所做的一些更改!


推荐阅读