首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP :如何在访问链接时获取返回的链接

PHP :如何在访问链接时获取返回的链接
EN

Stack Overflow用户
提问于 2012-02-15 19:10:03
回答 1查看 369关注 0票数 0

我有一个问题,我希望你们都能帮助我。我在用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并获取所有数据(状态、图片、链接等),然后显示在我的博客上。问题是:可以显示文本数据,但不能显示头像。因为显示头像的代码是:

代码语言:javascript
复制
<img src="$fb_pic_id" />

我的php代码中的$fb_pic_id将返回链接A ->这个链接有facebook域名,在我的国家(facebook是被禁止的),浏览器不能显示,默认情况下连接将在30秒后超时。

但如果我将链接B传递给"src“attr,则会显示个人资料图片。但我不能硬编码这个链接在我的php代码,因为当我(和其他用户)改变个人资料图片,链接B将不是真的。

所以我想问我们是否可以使用PHP代码来获取从链接A返回的链接B,之后,我会将LinkB设置为"src“attr以显示最新的facebook个人资料图片ID。

谢谢,我希望你能帮助我:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-15 20:30:08

脸书使用的是使用Location头的超文本传输协议重定向,所以获取图片的最终网址非常简单:

代码语言:javascript
复制
$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...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9292213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档