【问题标题】:PHP : How to get returned link when access a linkPHP:访问链接时如何获取返回的链接
【发布时间】:2012-02-15 20:30:08
【问题描述】:

我有一个问题,希望大家能帮助我。我正在使用 Wordpress。在我的国家,脸书是被禁止的。所以我无法在以下位置访问我的 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 代码中的$fb_pic_id 将返回链接 A -> 此链接在其中和我的国家/地区有 facebook 域(facebook 被禁止),浏览器无法显示,默认情况下连接将在 30 秒后超时。

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

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

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

【问题讨论】:

    标签: facebook image hyperlink get


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 2020-09-04
      • 2016-12-07
      • 2014-03-02
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多