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

发布于 2025-01-05 07:34:46 字数 943 浏览 0 评论 0原文

我有一个问题,希望大家能帮助我。我正在使用 Wordpress。在我的国家,Facebook 被禁止。所以我无法访问我的 Facebook 个人资料图片:

链接 A:http://graph.facebook.com/ 100001225080368/图片 -> facebook 会将链接 B 返回到浏览器:

链接 B : http://profile.ak.fbcdn.net/hprofile-ak-snc4/161159_100001225080368_1270343183_q.jpg

我的博客上有一个应用程序。它将连接到 Facebook 并获取所有数据(状态、图片、链接、喜欢...),然后显示在我的博客上。问题是:文本数据可以显示,但个人资料图片不能显示。因为显示个人资料图片的代码是:

<img src="$fb_pic_id" />

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

但如果我将链接 B 传递给“src”attr,则会显示个人资料图片。但我无法在我的 php 代码中硬编码此链接,因为当我(和其他用户)更改个人资料图片时,链接 B 将不正确。

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

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

I have a problem and I hope you all will help me. I'm using Wordpress. In my country, facebook is banned. So I can't access my Facebook Profile Picture at :

Link A : http://graph.facebook.com/100001225080368/picture -> and facebook will return link B to browser :

Link B : http://profile.ak.fbcdn.net/hprofile-ak-snc4/161159_100001225080368_1270343183_q.jpg

I have an app on my blog. It will connect to facebook and get all data (status, picture, link, like...), and then, display on my blog. The problem is : text data can be displayed but profile picture can't be. That because the code to display profile picture is :

<img src="$fb_pic_id" />

$fb_pic_id in my php code will return Link A -> this link has facebook domain in it and in my country (facebook is banned), the browser can't display and the connect will be timeout after 30s by default.

But if I pass Link B to "src" attr, the profile picture will be displayed. But I cant hardcode this link in my php code beacause when I (and other users) change profile picture, Link B will not true.

So I want to ask if we can using PHP code to get the Link B that returned from Link A and after that, I will set LinkB to "src" attr to display the newest facebook profile picture ID.

Thanks and I hope you will help me :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

难忘№最初的完美 2025-01-12 07:34:46

Facebook 使用 Location 标头进行 HTTP 重定向,因此获取图像的最终 URL 非常简单:

$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...
}

Facebook is using HTTP redirection using Location header so it's pretty simple to get final URL of an image:

$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...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文