PHP Google API Client v3 получить контакты

У меня все еще есть проблемы с новой php-библиотекой google_api_client. Я пытаюсь получить контакты пользователя.

Я очень близок к правильному решению... Я имею в виду, что я только что получил все результаты, но не могу их проанализировать.

Вероятно, это потому, что я не силен в парсере XML. После тестов и тестов... я получаю это решение (на основе файла примера Google):

...
$req = new apiHttpRequest("https://www.google.com/m8/feeds/contacts/default/full");         
$val = $client->getIo()->authenticatedRequest($req);
$response = simplexml_load_string($val->getResponseBody());

foreach($response->entry as $entry)
{
    $child = $entry->children("http://schemas.google.com/g/2005");
    $mail_info = $child->attributes();
}
...

В $response я могу получить поле заголовка, в котором хранится полное имя моего контакта, а в $mail_info есть объект, в котором я вижу поле адреса, когда получаю адрес электронной почты.

Это ГРУСТНОЕ и УЖАСНОЕ решение... что, если я хочу название компании, адрес... номера телефонов... фотографии. Где все эти сведения.

Как я могу использовать ответ Google в отличном и чистом решении?

Кто-нибудь может мне помочь. до свидания


person jacopo.galli    schedule 04.11.2012    source источник


Ответы (1)


Что мне помогло, так это запросить JSON вместо XML. Попробуйте добавить ?alt=json в конец URL-адреса в запросе, который вы отправляете в Google.

$req = new apiHttpRequest("https://www.google.com/m8/feeds/contacts/default/full?alt=json");         
$val = $client->getIo()->authenticatedRequest($req);
$string = $val->getResponseBody();
$phparray = json_decode($string);

Конечно, не детская игра, чтобы получить то, что вы хотите, но работать с массивами php, вероятно, проще.

Для полноты это Пример php для контактов Google, который мы оба, вероятно, нашли, и который нам помог:

https://code.google.com/p/google-api-php-client/source/browse/trunk/examples/contacts/simple.php

ИЗМЕНИТЬ:

Вот еще ссылка, может поможет. В комментариях описан очиститель доступа к данным контакта с помощью JSON.

http://25labs.com/import-gmail-or-google-contacts-using-google-contacts-data-api-3-0-and-oauth-2-0-in-php/

$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$accesstoken;
$xmlresponse =  curl_file_get_contents($url);

$temp = json_decode($xmlresponse,true);

foreach($temp['feed']['entry'] as $cnt) {
    echo $cnt['title']['$t'] . " --- " . $cnt['gd$email']['0']['address'] . "</br>";
}

а также

$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$accesstoken;
$xmlresponse =  curl_file_get_contents($url);

$temp = json_decode($xmlresponse,true);

foreach($temp['feed']['entry'] as $cnt) {
    echo $cnt['title']['$t'] . " --- " . $cnt['gd$email']['0']['address'];
    if(isset($cnt['gd$phoneNumber'])) echo " --- " . $cnt['gd$phoneNumber'][0]['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$street'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$street']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$neighborhood'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$neighborhood']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$pobox'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$pobox']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$postcode'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$postcode']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$city'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$city']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$region'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$region']['$t'];
    if(isset($cnt['gd$structuredPostalAddress'][0]['gd$country'])) echo " --- " . $cnt['gd$structuredPostalAddress'][0]['gd$country']['$t'];
    echo "</br>";
}
person im3r3k    schedule 07.11.2013
comment
отлично работает, если вы используете file_get_contents вместо curl_file_get_contents - person CG_DEV; 27.02.2014