谷歌联系人Api - >哪些联系人被删除?
问题描述:
我正在解析Gmail中的联系人,并使用我的产品创建同步功能。 但在我的脚本中,我很难确定哪些联系人从Gmail中'删除'。谷歌联系人Api - >哪些联系人被删除?
例如: 如果我在我的应用程序中有John Doe以及Gmail ...(并且它们与gmailId同步)。后来在路上,如果用户删除联系人John Doe,我运行我的SYNC,如何确定联系人已被删除?
我需要知道在哪里扔触发删除我的数据库内相同的接触。我现在有这个来获取每个通过联系人发送的信息。
$xml = simplexml_load_string($entry->getXML());
$obj = new stdClass;
// EDIT LINK
$obj->gmailUrl = rawurlencode($entry->id);
$obj->delete = (string) $xml->groupMembershipInfo['deleted'];
// FIRST Name
$obj->firstName = (string) $xml->name->givenName;
上一个在我的代码我也查询谷歌与这些额外的参数。
$query->setParam('updated-min', $updatedMin);
$query->setParam('showdeleted', 'true');
$query->setParam('requirealldeleted', 'true');
任何帮助,将不胜感激!
答
我发现Google删除联系人时添加了一个名为Deleted的空XML标签。
就是这样。
if(isset($xml->deleted)) { $deleted = "true"; } else { $deleted = NULL; }
$obj->delete = $deleted;
虽然Adrian的解决方案会工作,我觉得这是不是最好的解决办法,因为我觉得谷歌一定要为这个答案而不是检查,看是否有接触是可用的每一天。
答
我不知道任何特定的钩子,我也可以看到一个明显的deleted
场,但这里是另一种方式来解决这个问题...
当你做你的完全同步,或单个项目的更新,如果特定联系人不再返回,则可以将其标记为已删除。请注意,只有当您将showdeleted
保留为false
时,此功能才有效。
例...
$local = array(1, 3, 5, 7, 9);
运行完全同步...
$remote = array(, 1, 3, 5, 9);
两个数组比较将显示7已被删除。同样,如果您正在同步单个项目,如果它不返回任何内容,您可以认为它已被删除。
但是,只有当该商品在过去30天内根据谷歌的文档被删除时才会被捕获。 – jray0039
真的...为了同步它应该没问题,但对于最初的爆炸可能是一个问题... – Justin