2011-09-02 109 views
4

我正在解析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'); 

任何幫助,將不勝感激!

回答

1

我發現Google刪除聯繫人時添加了一個名爲Deleted的空XML標籤。

就是這樣。

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

雖然Adrian的解決方案會工作,我覺得這是不是最好的解決辦法,因爲我覺得谷歌一定要爲這個答案而不是檢查,看是否有接觸是可用的每一天。

+1

但是,只有當該商品在過去30天內根據谷歌的文檔被刪除時纔會被捕獲。 – jray0039

+0

真的...爲了同步它應該沒問題,但對於最初的爆炸可能是一個問題... – Justin

1

我不知道任何特定的鉤子,我也可以看到一個明顯的deleted場,但這裏是另一種方式來解決這個問題...

當你做你的完全同步,或單個項目的更新,如果特定聯繫人不再返回,則可以將其標記爲已刪除。請注意,只有當您將showdeleted保留爲false時,此功能纔有效。

例...

$local = array(1, 3, 5, 7, 9); 

運行完全同步...

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

兩個數組比較將顯示7已被刪除。同樣,如果您正在同步單個項目,如果它不返回任何內容,您可以認爲它已被刪除。