使用PHP检索Zend Gdata的联系人照片

使用PHP检索Zend Gdata的联系人照片,php,zend-framework,contacts,gdata,Php,Zend Framework,Contacts,Gdata,查询联系人时,我使用下面的代码检索我的所有联系人 $gdata = new Zend_Gdata($client); $gdata->setMajorProtocolVersion(3); $query = new Zend_Gdata_Query( "http://www.google.com/m8/feeds/contacts/default/full"); $feed = $gdata->getFeed($query); 当我查看$feed的每个条目时,我可

查询联系人时,我使用下面的代码检索我的所有联系人

$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);
$query = new Zend_Gdata_Query(
         "http://www.google.com/m8/feeds/contacts/default/full");
$feed = $gdata->getFeed($query);
当我查看$feed的每个条目时,我可以访问contactId,并且根据Contacts API,我应该能够通过在以下URL上执行get来检索图片:

因此,我使用相同的机制检索联系人,并在设置$id后尝试获取照片:

$query = new Zend_Gdata_Query(
         "http://www.google.com/m8/feeds/photos/media/default/$id");
$entryFeed = $gdata->getFeed($query);

但我得到一个错误“DOMDocument无法解析XML”。我做错什么了吗?是否有任何示例文档?

要获取照片,请使用DOMXpath并搜索“/atom:link”标记,然后使用$gdata->get(href)获取照片。检查每个链接的etag属性,这将告诉您是否有与此联系人关联的个人资料照片

            $doc = new DOMDocument;
            $doc->recover = true;
            $doc->loadXML($entry->getXML());
            $xpath = new DOMXPath($doc);
            $links = $xpath->query('//atom:link');
            foreach($links as $link)  {
                if($link->getAttribute('etag') != "") {
                    $http_response = $gdata->get($link->getAttribute('href'));
                    $rawImage = $http_response->getBody();
                    $fp = fopen("/var/www/profile/$id.jpg", "w");
                    fwrite($fp, $rawImage);
                    fclose($fp);
                    break;
                }
            }