【问题标题】:Attaching arbitrary Id to Google Contact Address将任意 ID 附加到 Google 联系地址
【发布时间】:2012-01-28 22:47:07
【问题描述】:

我正在尝试在 Google 联系人(通过他们的数据 API)和我们的内部系统之间进行同步。 我希望能够将我们的地址 ID 附加到 Google 结构化地址,但我似乎找不到方法。

我尝试将其添加为自定义属性、扩展元素以及我能想到的所有内容,但无济于事。

我最好的办法是添加 ExtensionFactory,它似乎去了 Google(我四处寻找,看到它进入了他们的系统)但再也没有回来。可能他们不接受地址的扩展工厂/扩展元素,而只接受联系人?

那么 - 是否可以将 ID 附加到地址(我知道我可以附加到联系人,但我希望能够附加到地址,因为一个联系人可能有多个地址)。

我正在使用 C# 并下载了 Google Data Contacts API C# 库。

如果您需要,请询问更多信息。

【问题讨论】:

  • 抱歉 - 误读了问题。

标签: c# google-api gdata google-data


【解决方案1】:

没有简单的方法可以做到这一点。 API 不允许将任意数据附加到 gd:structuredPostalAddress 字段。

最好的办法是将数据附加到联系人(如gd:extendedProperty)并使用一些唯一标识符将其链接到特定地址。这个唯一标识符可以是地址数据的散列。或者,如果您不关心偶尔的缺失,它可能是gd:rel 值和地址在列表中的位置的组合。

【讨论】:

  • 对地址进行哈希处理很容易出错。如果用户在 Google 界面中编辑它——我们就有麻烦了。散列 rel + 位置也不会起作用,如果我们有 3 个地址并且用户删除了第二个,第三个将成为列表中的第二个。我在这里错过了什么吗?无论如何,如果您绝对肯定无法将任意数据附加到地址,这也可以算作答案,我将等待更多意见并标记它,如果它恰好是这种情况......
  • 您没有明确要求在 Web 界面和/或其他应用程序中更改地址时保留 ID。这就是我建议散列的原因。 gd:rel 和 position 的组合不容易出错,但它可能是你能得到的最好的。这肯定比单独的位置更好。
  • 顺便说一句,我有理由确定没有办法将任意数据与地址一起往返。我无法提供任何其他来源来支持这一说法,但我已经为 eM 客户端(类似 Outlook 的应用程序)编写了 Google 联系人同步。此外,Google 联系人数据的其他接口(ActiveSync 和便携式联系人)无论如何都无法往返信息。
  • 好的,Filip,感谢您的帮助!你的方法似乎是我们能做的最好的事情。我将在我们的内部系统中添加更多内容,我们可能会涵盖大多数情况。
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多