微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

google api联系php simplexml

我希望从谷歌联系人那里获取联系人的名字,没有任何运气.但是,我能够提取电子邮件地址没问题.有人能告诉我我做错了什么吗?

$xmlresponse=file_get_contents('https://www.google.com/m8/Feeds/contacts/default/full?oauth_token='.$accesstoken);
//reading xml using SimpleXML
$xml=  new SimpleXMLElement($xmlresponse);
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');

$nameFirst = $xml->xpath('//gd:givenname'); // I have also tried //gd:name
$result = $xml->xpath('//gd:email');

foreach($nameFirst as $nameF){
echo $nameF->getName();
}
foreach ($result as $title) {
echo $title->attributes()->address . "<br>";
}
?>

解决方法:

我从Google Contacts API获得的XML是混合的,名称是普通XML节点“title”的节点值,但该电子邮件是gdata标记gd:email中的参数.考虑到多个电子邮件地址的可能性,我使用以下内容提取单个名称/电子邮件对的数组:

$req = new Google_HttpRequest("https://www.google.com/m8/Feeds/contacts/default/property-email/");
$val = $this->client->getIo()->authenticatedRequest($req);
$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);
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐