我有一个问题,我希望你们都会帮助我。我正在使用Wordpress。在我的国家,Facebook被禁止。所以我无法访问我的Facebook个人资料图片:
链接A:http://graph.facebook.com/100001225080368/picture - >和Facebook将链接B返回浏览器:
链接B:http://profile.ak.fbcdn.net/hprofile-ak-snc4/161159_100001225080368_1270343183_q.jpg
我的博客上有一个应用程序。它将连接到Facebook并获取所有数据(状态,图片,链接,如...),然后显示在我的博客上。问题是:可以显示文本数据,但不能显示个人资料图片。那是因为显示个人资料图片的代码是:
<img src="$fb_pic_id" />
我的PHP代码中的但如果我将链接B传递给“src”attr,将显示配置文件图片。但我不能在我的PHP代码中硬编码这个链接,因为当我(和其他用户)更改个人资料图片时,链接B将不会是真的。
所以我想问一下我们是否可以使用PHP代码来获取从链接A返回的链接B,之后,我将把LinkB设置为“src”attr以显示最新的Facebook个人资料图片ID。
谢谢,我希望你能帮助我:)。
答案 0 :(得分:1)
Facebook正在使用Location
标头进行HTTP重定向,因此获取图片的最终网址非常简单:
$url = 'http://graph.facebook.com/100001225080368/picture';
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HEADER => true,
CURLINFO_HEADER_OUT => true,
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true
));
$headers = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($code == 302) {
preg_match('/Location:(.*?)\n/', $headers, $matches);
// NOTE: this will contain URL from `*.fbcdn.net`
$directURL = trim(array_pop($matches));
} else {
// NOTE: Previous code wasn't redirect by Facebook to original image
// Do some fallback...
}