我正在研究一种联系人同步解决方案,以便能够使我们应用中的联系人与用户的Google联系人保持同步。
我们的代码将php库用于google people api的最新版本(v1)。
每个用户在一周内一切正常,但是在这一周之后,我们得到了:
400-错误“同步令牌已过期。 清除本地缓存并重试没有同步令牌的呼叫。”
我现在的问题:
这种预期的行为是您必须在一周后不做任何更改就清除所有缓存吗?还是我做错了什么?
如果没有更改,是否有可能续签syncToken?
我已经检查了整个代码,以确保新收到的nextSyncToken
已保存在我们这边,并用于下一个增量同步请求。看来新的同步令牌始终与请求中发送的令牌相同。因此,很明显,如果同步令牌在一周后过期,我们就会收到该错误消息。
我还尝试将每个列表请求的选项requestSyncToken
设置为true
,即使同时设置了syncToken
也是如此。没有成功每次请求后,同步令牌均保持不变。
答案 0 :(得分:0)
在同步之前创建一个虚拟联系人以获取新的syncToken
。同步后,从Google通讯录和您的缓存中删除虚拟联系人。
答案 1 :(得分:0)
以防万一某人也遇到此问题(syncToken
在一周后过期,而人员/联系人列表没有变化)
我们的解决方案是:
syncToken
的创建日期和时间
与syncToken
在一起。syncToken
时,将该令牌与存储的令牌进行比较。如果syncToken
是新的
一,覆盖旧的及其创建日期/时间。syncToken
。如果大约一个星期(出于安全原因,我们使用了6天)创建一个新的
syncToken
(过程请参见下文)。由于人员API不提供
诸如此类的日历API监视频道之类的东西
需要一些连续的流程来在固定时间内进行列表呼叫
一个完整的实时同步的时间间隔-也许您
可以根据您的解决方案组合这些任务
有问题吗?!创建新的SyncToken的过程:
syncToken
的情况下提出新的列表请求。syncToken
和日期/时间以及当前的日期/时间覆盖。就是这样。
但是注意!如果您的syncToken
续订过程恰好在进行更改时正在运行,您仍然会错过所做的一些更改!