我已经创建了一个类来管理与Google联系人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返回的联系人数据提供的url,如下所示:
https://www.google.com/m8/feeds/photos/media/{userEmail}/{contactID}
这是一个URL的例子(根据我的项目):
https://www.google.com/m8/feeds/photos/media/example%40gmail.com/ABCDEFGHIJK2345
有时contactId包含一个"/"
来自谷歌的错误消息是:
401. That's an error.
There was an error in your request. That's all we know.
我错过什么了吗?
注意:我尝试了urlencode、urldecode,但没有使用它们。。。但我也遇到了同样的问题。此外,我正在测试的联系人有gmail照片。
您正在对整个url进行编码,这可能是造成混乱的原因!?
$url = $url . '&access_token=' . urlencode($this->_access_token);
我终于解决了这个问题,这就是我所做的:
我更改了"&"到"?"在$url 中
$url.'&access_token='.$this->_access_token
更改为:
$url.'?access_token='.$this->_access_token
由于access_token是第一个参数。。。我去掉了卷曲,我只是原样返回$url,并将其放在图像src中。
尽管它以某种方式得到了解决,但我不知道是否可以将access_token放在图像的src中(任何客户端用户都可以查看)。