5

我注意到,当我通过 Graph API(使用 PHP)访问时间线封面照片 URL 时,返回的照片是 720x266 而不是 851x315。要么使用,要么通过访问访问时返回的json数组<graph api url>/userId/?field=cover中的url['cover']['source']<graph api url>/userID

我一直无法找到检索全尺寸封面照片的方法。使用萤火虫我可以看到 Facebook 加载全尺寸 851x315 图像,URL 的唯一区别似乎是 API 返回的路径中有 720x720,

Facebook 加载的内容:

http://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg

Graph API 返回的内容

http://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/s720x720/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg

有没有办法可以直接访问该全尺寸封面照片 URL?我可以解析 API 返回的 URL 以去除 720x720,但我希望这是直接获取全尺寸封面照片 URL 的更优雅的方式。

4

3 回答 3

6

访问 facebook 用户的全尺寸时间线封面照片


在 php 中,我们可以执行以下操作。它是一个小技巧,我不保证它会终生使用。

如您所见,s720x720返回的照片网址中有一个。现在我们将用 l720(L720) 替换它。借助 php 中的 preg_replace() 。


$coverphoto_url="https://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/s720x720/xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg";

$coverphoto_url = preg_replace('/s720/i','l720',$coverphoto_url);

这将返回,

https://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/l720x720 /xxxxxx_xxxxxxxxxxxxxxx_xxxxxxxxxx_n.jpg _


您也可以使用 javascript 执行此操作。

coverphoto_url = coverphoto_url.replace(/s720/i, 'l720');

如果您不知道如何通过图形 API 检索封面照片,请阅读此问题。

如何获取安全封面 URL?

希望这可以帮助某人:)

于 2013-01-16T13:08:21.353 回答
3

接受的答案现在被新的 Facebook Graph API 打破了,我可以使用这个函数在 JavaScript 中获得高质量的封面照片:

FB.api("/hawaiianchimp?fields=cover", function(response){
        FB.api("/"+response.cover.id, function(response){
            var img_src = response.images[0].source;
        });
      });

这将获取封面照片 ID,然后执行第二次 Graph API 调用以获取图像源

于 2014-09-15T18:35:49.167 回答
1

在我的测试中,这部分 url 是问题的症结所在: .../c0.0.851.315/...

因此,执行这样的请求:

$url = "https://graph.facebook.com/{$id}?fields=cover";

// // this points it to the actual banner, not the fullsized one 
$key_851 = 'c0.0.851.315';

$response = json_decode( file_get_contents( $url ) );

if( is_object( $response ) && property_exists( $response->cover , 'source' ) ) {
    $coverphoto_url = preg_replace( '/s720(\w*\.*)\d*(?<!\/)/i', $key_851 ,$response->cover->source );
    echo $coverphoto_url;
}
于 2014-01-12T11:43:13.273 回答