Php 谷歌联系人Api->;删除了哪些联系人?

Php 谷歌联系人Api->;删除了哪些联系人?,php,xml,synchronization,gmail,Php,Xml,Synchronization,Gmail,我正在解析Gmail中的联系人,并为我的产品创建同步功能。 但在我的脚本中,我很难确定哪些联系人被gmail“删除” 例如: 如果我的应用程序中有约翰·多伊和Gmail。。。(它们与Gmail同步)。后来,如果用户删除了联系人John Doe,而我运行了同步,如何确定该联系人已被删除? 我需要知道在哪里触发删除数据库中的同一联系人。我现在有这个来获取每个联系人的信息 $xml = simplexml_load_string($entry->getXML()); $obj = new std

我正在解析Gmail中的联系人,并为我的产品创建同步功能。 但在我的脚本中,我很难确定哪些联系人被gmail“删除”

例如: 如果我的应用程序中有约翰·多伊和Gmail。。。(它们与Gmail同步)。后来,如果用户删除了联系人John Doe,而我运行了同步,如何确定该联系人已被删除?

我需要知道在哪里触发删除数据库中的同一联系人。我现在有这个来获取每个联系人的信息

$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;
在我前面的代码中,我还使用这些额外的参数查询google

$query->setParam('updated-min', $updatedMin);
$query->setParam('showdeleted', 'true');
$query->setParam('requirealldeleted', 'true');

任何帮助都将不胜感激

我不确定是否有任何特定的钩子,也看不到明显的
deleted
字段,但这里有另一种解决问题的方法

在执行完全同步或单项更新时,如果某个特定联系人不再返回,则可以将其标记为已删除。注意,只有将
showdelected
保持为
false
时,这才有效

例如

$local = array(1, 3, 5, 7, 9);
你运行完全同步

$remote = array(, 1, 3, 5, 9);

比较这两个数组将显示7已被删除。类似地,如果您正在同步单个项目,如果它没有返回任何内容,您可以假定它已被删除。

我发现,在删除联系人时,Google会添加一个名为deleted的空XML标记

像这样的

if(isset($xml->deleted)) { $deleted = "true"; } else { $deleted = NULL; } 
$obj->delete = $deleted;

虽然Adrian的解决方案可行,但我觉得这并不是最好的解决方案,因为我觉得谷歌必须对此有一个答案,而不是每天查看联系人是否可用。

但是,只有在谷歌的文档中,在过去30天内删除了该项目,才会发现这一点。没错。。。对于同步它应该是好的,但对于初始爆炸可能是一个问题。。。