Я занимаюсь разработкой приложения на PHP, которое должно загрузить 100 контактов в первый раз, я разработал базовое приложение для загрузки контакта, но оно занимает около 1,5 секунды обработать запрос:
$before = microtime(true);
$req = new Google_Http_Request("https://google.com/m8/feeds/contacts/" . $user_email . "/full/");
$req->setRequestMethod("POST");
$req->setPostBody($contact_xml);
$req->setRequestHeaders(array('content-length' => strlen($contact_xml), 'GData-Version' => '3.0', 'content-type' => 'application/atom+xml; charset=UTF-8; type=feed'));
$submit = $this->_gclient->getAuth()->authenticatedRequest($req);
$sub_response = $submit->getResponseBody();
$parsed = simplexml_load_string($sub_response);
$client_id = explode("base/", $parsed->id);
//Profiling
$after = microtime(true);
Я пытался присоединиться к моей записи дважды или раз, когда мне было нужно, но это не работает:
$contact_xml.="<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:gContact='http://schemas.google.com/contact/2008'>
<atom:category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/contact/2008#contact'/>
...
<gContact:groupMembershipInfo deleted='false'
href='http://www.google.com/m8/feeds/groups/".$user_email."/base/6'/>
</atom:entry>
И единственное, что я получаю от Google:
[1] => SimpleXMLElement Object
(
[error] => SimpleXMLElement Object
(
[domain] => GData
[code] => parseError
[internalReason] => Parse Error
)
)
Что похоже на …
Чем ты!
Наконец, благодаря DalmTo, пакетная функциональность GData отлично вписывается в эту проблему.
Вот пример канала, который вам нужно создать, чтобы использовать пакетные функции:
<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:gContact='http://schemas.google.com/contact/2008'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:batch='http://schemas.google.com/gdata/batch'>
<entry>
<batch:id>create</batch:id>
<batch:operation type='insert'/>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2008#contact'/>
<gd:name>
<gd:fullName>Example example</gd:fullName>
<gd:givenName>Example</gd:givenName>
<gd:familyName>Example</gd:familyName>
</gd:name>
<gd:email rel='http://schemas.google.com/g/2005#home' address='[email protected]' primary='true'/>
</entry></feed>
тогда вам просто нужно скопировать вашу запись с операцией, которую вы должны зациклить.
Просто для того, чтобы получить контакты, созданные в папке «Входящие», необходимо добавить:
<gContact:groupMembershipInfo deleted = 'false' href = 'http://www.google.com/m8/feeds/groups/" . $user_email . "/base/6' />
Запрос в Google будет выглядеть так:
$req = new Google_Http_Request("https://www.google.com/m8/feeds/contacts/" . $user_email . "/full/batch/");
Надеюсь, это кому-нибудь поможет.
Других решений пока нет …