我创建了一个类来管理与Google Contacts API的连接,验证并返回联系人。
我已成功获得联系人列表,但我还没有设法获得联系人照片。这是我的HTML代码:
<img src="<?= $service->getPhoto($contact['image']) ?>" />
这是我的php:
public function getPhoto($url = false){
if(!$url)
return false;
$url = urlencode($url.'&access_token='.$this->_access_token);
//echo $url.'&access_token='.$this->_access_token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
$image = curl_exec($curl);
curl_close($curl);
return $image;
}
请注意,$ url参数是Google API返回的联系人数据提供的网址,如下所示:
https://www.google.com/m8/feeds/photos/media/{userEmail}/{contactID}
这是一个URL的例子(根据我的项目):
https://www.google.com/m8/feeds/photos/media/example%40gmail.com/ABCDEFGHIJK2345
有时contactId包含'/'
来自Google的错误消息是:
401. That's an error.
There was an error in your request. That's all we know.
我错过了什么吗?
注意:我尝试使用urlencode,urldecode并尝试不使用它们......但我遇到了同样的问题。此外,我正在测试的联系人有gmail照片。
答案 0 :(得分:1)
您正在对整个网址进行编码,可能是导致混乱的原因!?
$url = $url . '&access_token=' . urlencode($this->_access_token);
答案 1 :(得分:0)
我终于解决了这个问题,这就是我所做的:
我改变了'&amp;'至 '?'在$ url
$url.'&access_token='.$this->_access_token
更改为:
$url.'?access_token='.$this->_access_token
由于access_token是第一个参数......我删除了curl,我只是按原样返回$ url并将其放在图像src中。
虽然它已经以某种方式解决了,但我不知道将access_token放在图像的src中是否可行(任何客户端用户都可以查看)。