Facebook graph api 通过graph api访问全尺寸(851x315)时间轴封面照片

Facebook graph api 通过graph api访问全尺寸(851x315)时间轴封面照片,facebook-graph-api,Facebook Graph Api,我注意到,当我通过Graph API(使用PHP)访问timeline封面照片URL时,返回的照片是720x266,而不是851x315。使用,/userId/?field=cover或访问访问/userId时返回的json数组的['cover']['source']中的url 我一直找不到一种方法来检索全尺寸封面照片。使用firebug,我可以看到Facebook加载了全尺寸的851x315图像,URL的唯一区别似乎是API返回的路径中有720x720 Facebook加载的内容: Grap

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

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

Facebook加载的内容:

Graph API返回的内容

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

访问facebook用户的全尺寸时间表封面照片
在php中,我们可以执行以下操作。 这是一个小技巧,我不能保证它会工作一辈子

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



这会回来的,

https://a3.sphotos.ak.fbcdn.net/hphotos-ak-prn1/l720x720/xxxxxx\u xxxxxxxxxxxxx\u xxxxxxxxx\u n.jpg


您也可以使用javascript实现这一点

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

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


希望这对某人有所帮助:)

在我的测试中,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;
}
$url=”https://graph.facebook.com/{$id}?字段=封面“;
////这将指向实际的横幅,而不是完整的横幅
$key_851='c0.0.851.315';
$response=json_decode(文件获取内容($url));
如果(是对象($response)&&property_存在($response->cover,'source')){

$coverphoto\u url=preg\u replace('/s720(\w*\.*)d*(?新的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调用以获取图像源

如果它对任何人都有帮助,我现在就这样做,$large_cover_photo=explode('s720x720/',$main_page['cover']['source']);$large_cover_photo=内爆('',$large_cover_photo)$main_page是我查询/userid时返回的json数组,但如果有人知道怎么做的话,找到一种直接访问全尺寸图像的方法仍然是最好的。你这样做没问题。现在去找一个真正的挑战;)只是向未来的读者指出,这是可行的,但它不是100%可靠的。如果您计划使用它,至少在
处理程序上附加一个
onerror
处理程序,以便在失败时恢复
FB.api("/hawaiianchimp?fields=cover", function(response){
        FB.api("/"+response.cover.id, function(response){
            var img_src = response.images[0].source;
        });
      });