2016-07-29 21 views
6

Ich möchte volle Kontaktlisten mit E-Mails meiner Freunde erhalten. Ich kann die Liste der Kontakte, aber keine E-Mails erhalten.Google API - Kontakte erhalten mail

Hier ist mein Code:

require_once APPPATH . 'vendor/google/src/Google_Client.php'; 
require_once APPPATH . 'vendor/google/src/contrib/Google_Oauth2Service.php'; 
$client = new Google_Client(); 

$client->setApplicationName("PHP Google Test"); 
$client->setClientId('xxx'); 
$client->setClientSecret('xxx'); 
$client->setRedirectUri('http://www.domain.xx/admin/others/google?test'); 
$client->setScopes("http://www.google.com/m8/feeds/"); 

$oauth2 = new Google_Oauth2Service($client); 

if (isset($_GET['code'])) { 
    $client->authenticate(); 
    $_SESSION['token'] = $client->getAccessToken(); 
    $redirect   = 'http://www.domain.xx/admin/others/google'; 
    header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); 
} 
if (isset($_SESSION['token'])) { 
    $client->setAccessToken($_SESSION['token']); 
} 
if (isset($_REQUEST['logout'])) { 
    unset($_SESSION['token']); 
    $client->revokeToken(); 
} 
if ($client->getAccessToken()) { 
    $req = new Google_HttpRequest("https://www.google.com/m8/feeds/contacts/default/full"); 
    $val = $client->getIo()->authenticatedRequest($req); 
    $response = json_encode(simplexml_load_string($val->getResponseBody())); 
    print "<pre>" . print_r(json_decode($response, true), true) . "</pre>"; 
    $_SESSION['token'] = $client->getAccessToken(); 
} else { 
    $auth = $client->createAuthUrl(); 
} 

$auth = $client->createAuthUrl(); 

echo '<a href="' . $auth . '" target="_blank">' . $auth . '</a>'; 

Wie ich E-Mails von Kontaktliste zu bekommen?

+0

mir jemand helfen? –

+0

Hier ist genau die gleiche Frage mit der Antwort: http://stackoverflow.com/questions/21469433/how-to-get-email-address-when-user-is-authenticated-with-google-oauth2-and-peopl – Jehy

+0

Nein, ich brauche E-Mails von Kontakten :) –

Antwort

3

Ich habe Lösung:

Code:

$response = json_encode(simplexml_load_string($val->getResponseBody())); 
print "<pre>" . print_r(json_decode($response, true), true) . "</pre>"; 

Wechseln zu:

$xml = simplexml_load_string($val->getResponseBody()); 
      $xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');   

      $output_array = array(); 
      foreach ($xml->entry as $entry) { 
       foreach ($entry->xpath('gd:email') as $email) { 
       $output_array[] = array((string)$entry->title, (string)$email->attributes()->address); 
       } 
      } 
      print_r($output_array); 
0

Sie nutzen die Kontakt Art von gdata Komponenten in Google Kontakt APIs machen Unter der Annahme, $response ist die Antwort, die Sie von der Anfrage an den Google-Kontakt haben:

$xml= new SimpleXMLElement($response); 
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005'); 
$result = $xml->xpath('//gd:email'); 

Mehr Info auf Kontakt Art Element von Google Kontakt API beziehen here

Verwandte Themen