Google Contacts Api ->哪些联系人被删除


Google Contacts Api -> Which contacts were deleted?

我正在从Gmail解析联系人,并与我的产品创建同步功能。但是在我的脚本中,我很难确定哪些联系人会从gmail中"删除"。

的例子:如果我有约翰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');

任何帮助将不胜感激!

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

当您进行完全同步或单个项目更新时,如果某个特定联系人不再返回,则可以将其标记为已删除。注意,这只会在您将showdeleted保留为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的解决方案可以工作,但我觉得这不是最好的解决方案,因为我觉得谷歌必须有一个答案,而不是每天检查一个联系人是否可用。