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


Retrieving Contact photo with Zend Gdata with PHP

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

$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来检索图片:

http://www.google.com/m8/feeds/photos/media/default/contactId

因此,我使用相同的机制来检索联系人,并在设置$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;
                }
            }