问题描述
我正在将我们的代码从 Google Contacts API
迁移到 Google People API
,因为 Google Contacts API 很快就会被弃用,但我注意到新的 People API 很容易与旧的 Contacts API 进行比较。
例如,我们有以下代码使用旧的 Contacts API 在特定的联系人组中进行搜索,并在特定日期后通过传入 Group
和 StartDate
参数进行更新,但现在我们可以不要使用新的 People API 执行相同的查询。
我的问题是在新的 People API 中,有什么方法可以搜索特定群组中的联系人并只获取在特定日期之后更新的联系人吗?
我看到一个使用 syncToken
的问题,但我认为这对我们来说不是一个好的解决方案。
Option to get the contact entries updated after a specific time NOT given in Google People API
GData.Contacts.ContactsFeed Feed = service.Query(
new GData.Contacts.ContactsQuery("https://www.google.com/m8/Feeds/contacts/default/full/")
{
OAuthRequestorId = employeeUserEmail,Group = [contact group url],NumberToRetrieve = FetchSize,StartIndex = 1,StartDate = [a date that only get contacts were modified after it],});
解决方法
我认为他们有意从使用时间戳方法(给我自 2021 年 1 月 1 日以来更新的所有联系人)改为使用 SyncToken 方法。
SyncToken 消除了任何可能导致数据丢失的竞争条件。 例如,如果在查询正在进行时更新了联系人,这会导致该联系人是否包含在下一个查询中的竞争条件,这可能会导致数据更改未同步并且下一次同步将被覆盖。
因此,如果您要进行全新同步,或超过 7 天未同步,只需通过以下方式获取群组的所有联系人:contactGroups.get。 如果上次同步时间少于 7 天,请使用同步令牌仅获取更新的联系人。
您可能会获取某个群组的所有联系人,然后运行通过 sources.updateTime
进行过滤的循环,但同样存在数据丢失的风险。