google-people-api - People.Connections.List nextSyncToken 一周后过期
问题描述
我正在开发一个联系人同步解决方案,以使我们的应用程序中的联系人与用户的谷歌联系人保持同步。
我们的代码使用 google people api 最新版本 (v1) 的 php 库。
每个用户一周内一切正常,但在那一周之后,我们得到:
400 - 错误“同步令牌已过期。清除本地缓存并在没有同步令牌的情况下重试调用”。
我现在的问题:
这是您必须在一周后清除所有缓存而没有更改的预期行为,还是我做错了什么?
如果没有更改,是否有可能更新同步令牌?
我已经检查了整个代码,以确保新收到nextSyncToken
的代码保存在我们身边并用于下一个增量同步请求。似乎新的同步令牌总是与请求中发送的相同。因此,很明显,如果同步令牌恰好在一周后过期,我们就会收到该错误。我还尝试为每个列表请求设置选项requestSyncToken
,true
即使也syncToken
设置了 a 。没有成功。每次请求后同步令牌保持不变,没有任何变化。
解决方案
以防万一有人也面临这个问题(syncToken
一周后到期,人员/联系人列表没有变化):
我们的解决方案是:
- 每次
syncToken
与syncToken
. - 当您
syncToken
在增量同步过程中收到一个令牌时,将该令牌与存储的令牌进行比较。如果syncToken
是新的,则覆盖旧的及其创建日期/时间。 - 使用一个连续的过程来检查每个
syncToken
. 如果一个大约一周大(出于安全原因,我们使用了 6 天)创建一个新的syncToken
(过程见下文)。由于人员 API 不提供诸如日历 API 的监视通道之类的功能,因此您无论如何都需要一些连续的进程,这些进程以固定的时间间隔进行列表调用以实现完整的实时同步 - 所以也许您可以结合这些任务,具体取决于你对这个问题的解决方案?!
创建新 SyncToken 的过程:
- 在不提供
syncToken
. - 为了增加安全性,请进行一些检查,例如将收到的总人数与旧/当前数据预期的总人数进行比较。并且在一天中几乎没有人进行更改的时间(例如凌晨 2 点)执行此更新过程。
- 用新的和当前的日期/时间覆盖旧的
syncToken
和日期/时间。
而已。
但是注意!如果您的syncToken
续订过程恰好在进行更改时运行,您仍然可能会错过所做的一些更改!
推荐阅读
- windows-10 - 从文件名中提取日期戳并插入到 Date Taken meta (Windows)
- reactjs - React:对象作为 React 子级无效(找到:带键的对象。如果您打算渲染子级集合,请改用数组
- gatling - Gatling:在 .check(regex) 中提取多个组
- kubernetes - 使用 Kubeadm 部署本地 Docker 镜像
- php - 非常基本的 SQL 制作页面炸弹
- laravel-controller - 有什么方法可以在标签中发送 METHOD 值
- sql-server - SQL Server 代理作业监控(作业是否开始了?)
- navigationbar - 如何更改导航栏中的背景或颜色?
- google-chrome-extension - 从 origin 访问 'https://website.com/ajaxrequest' 的 XMLHttpRequest
' 已被 CORS 策略阻止 - javascript - 从数组中删除新添加的元素的问题