Google Contacts Api -> Какие контакты были удалены? - PullRequest
4 голосов
/ 03 сентября 2011

Я анализирую контакты из Gmail и создаю функцию синхронизации с моим продуктом.Но по моему сценарию мне трудно определить, какие контакты «удаляются» из gmail.

ПРИМЕР: Если у меня в приложении Джон Доу вместе с Gmail ... (и они синхронизируются с gmailId).Позже по дороге, если пользователь УДАЛЯЕТ контакт Джона Доу , и я запускаю 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;

Предыдущий в моем коде я также запросить Google с этими дополнительными параметрами.

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

Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Я обнаружил, что Google добавляет пустой тег XML под названием «Удалено» при удалении контакта.

Примерно так.

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

Хотя решение Адриана сработало, я чувствовал, что это не лучшее решение, так как чувствовал, что Google должен иметь ответ на этот вопрос, а не проверять, доступен ли контакт каждый день.

1 голос
/ 03 сентября 2011

Я не уверен ни в каких конкретных хуках, и при этом я не вижу очевидного поля deleted, но вот еще один способ решения проблемы ...

Когда вы делаете полную синхронизацию, илиОбновления отдельных элементов, если конкретный контакт больше не возвращается, вы можете пометить его как удаленный.Обратите внимание, это будет работать, только если вы сохраните showdeleted как false.

Пример ...

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

Вы выполняете полную синхронизацию ...

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

Сравнение двух массивов покажет, что 7 было удалено.Аналогично, если вы синхронизируете один элемент, если он ничего не возвращает, вы можете предположить, что он удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...