使用Curl获取gmail联系人照片


Getting a gmail contact Photo using Curl

我已经创建了一个类来管理与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中(任何客户端用户都可以查看)。