2012-11-04 3 views
1

J'ai toujours des problèmes avec la nouvelle bibliothèque php google_api_client. J'essaie de récupérer les contacts de l'utilisateur.PHP Google API Client v3 obtenir des contacts

Je suis très proche de la solution ... Je veux dire, je viens de recevoir tous les résultats mais ne peut l'analyser.

C'est probablement parce que je ne suis pas fort avec analyseur XML. Après tests et essais ... Je reçois cette solution (basée sur le fichier exemple par 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(); 
} 
... 

Dans la réponse $ je peux obtenir le champ titre où est stocké le nom complet de mon contact, et dans le $ mail_info a un objet où je vois le champ d'adresse quand j'obtiens l'adresse email.

Il est la solution SAD et UGLY ... si je veux que le nom de la société, adresse ... les numéros de téléphone ... les photos. Où sont toutes ces informations.

Comment puis-je utiliser la réponse Google dans une solution grande et propre?

Tout le monde peut me donner un peu d'aide. Bye

Répondre

6

Ce qui m'a aidé lui ai demandé JSON au lieu de XML. Essayez d'ajouter ?alt=json à la fin de l'URL dans la requête que vous effectuez sur google. Certainement pas un jeu d'enfant pour obtenir ce que vous voulez, mais travailler avec des tableaux php est probablement plus facile.

Pour être complet c'est le google contacts php example que nous avons tous deux sans doute constaté que nous a aidés:

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

EDIT:

Voici un autre lien qui pourrait vous aider. Dans les commentaires, il décrit un nettoyeur d'accès aux données de contact en utilisant 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>"; 
} 

et

$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>"; 
} 
+1

fonctionne très bien si vous utilisez file_get_contents au lieu de curl_file_get_contents –

Questions connexes