People.Connections.List nextSyncToken将于一周后过期

时间:2019-06-27 15:32:12

标签: google-people-api

我正在研究一种联系人同步解决方案,以便能够使我们应用中的联系人与用户的Google联系人保持同步。

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

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

  

400-错误“同步令牌已过期。   清除本地缓存并重试没有同步令牌的呼叫。”

我现在的问题:

这种预期的行为是您必须在一周后不做任何更改就清除所有缓存吗?还是我做错了什么?

如果没有更改,是否有可能续签syncToken?

我已经检查了整个代码,以确保新收到的nextSyncToken已保存在我们这边,并用于下一个增量同步请求。看来新的同步令牌始终与请求中发送的令牌相同。因此,很明显,如果同步令牌在一周后过期,我们就会收到该错误消息。 我还尝试将每个列表请求的选项requestSyncToken设置为true,即使同时设置了syncToken也是如此。没有成功每次请求后,同步令牌均保持不变。

2 个答案:

答案 0 :(得分:0)

在同步之前创建一个虚拟联系人以获取新的syncToken。同步后,从Google通讯录和您的缓存中删除虚拟联系人。

答案 1 :(得分:0)

以防万一某人也遇到此问题(syncToken在一周后过期,而人员/联系人列表没有变化)

我们的解决方案是:

  • 每次保存新syncToken的创建日期和时间 与syncToken在一起。
  • 在增量同步过程中收到syncToken时,将该令牌与存储的令牌进行比较。如果syncToken是新的 一,覆盖旧的及其创建日期/时间。
  • 使用连续的过程检查每个syncToken。如果大约一个星期(出于安全原因,我们使用了6天)创建一个新的 syncToken(过程请参见下文)。由于人员API不提供 诸如此类的日历API监视频道之类的东西 需要一些连续的流程来在固定时间内进行列表呼叫 一个完整的实时同步的时间间隔-也许您 可以根据您的解决方案组合这些任务 有问题吗?!

创建新的SyncToken的过程:

  • 在不提供syncToken的情况下提出新的列表请求。
  • 为了提高安全性,请进行一些检查,例如将接收到的总人数与旧的/当前的预期总人数进行比较 数据。并在一天几乎没有的情况下执行此更新过程 通常会发生变化,例如凌晨2点。
  • 用新的syncToken和日期/时间以及当前的日期/时间覆盖。

就是这样。

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