Facebook Graph API更改:图片类型(大小)不再有效?

时间:2012-08-16 07:08:05

标签: php facebook facebook-graph-api

根据Facebook的Graph API文档(here),您可以通过以下网址访问用户个人资料图片的各种尺寸:

https://graph.facebook.com/(userid)/picture?type=small
https://graph.facebook.com/(userid)/picture?type=large

你会注意到第一个解析为以_t.jpg结尾的网址(小缩略图),第二个结尾于_n.jpg(大图像)。到现在为止还挺好。同样,我们应该能够像这样查询这些图像:

https://graph.facebook.com/(userid)?fields=picture&type=small
https://graph.facebook.com/(userid)?fields=picture&type=large

后一种格式按预期工作了好几个月,直到几天前突然开始完全忽略“类型”参数 - 现在所有内容都解析为以_q.jpg结尾的图像,如果没有,则为默认值类型“已指定。结果,我再也找不到在PHP中查询大图像的方法(我的真正的问题)。它曾经像这样工作:

$pic = $facebook->api('/me', array('fields' => 'picture', 'type' => 'large'));

...但如上所述,“类型”已经自发地被忽略了。我花了几个小时搜索他们的文档,但是没有找到任何改变的参考,或者应该做的“新”方式 - 任何指针都会非常感激......

修改

以下任何一项工作都没有(不返回任何内容):

$pic = $facebook->api('/me/picture', array('type' => 'large'));
$pic = $facebook->api('/(my_uid)/picture', array('type' => 'large'));
$pic = $facebook->api('/me/picture/?type=large');
$pic = $facebook->api('/(my_uid)/picture/?type=large');

基本上,由于Facebook几天前破坏了东西,似乎没有办法从PHP获得非默认的图片大小。您可以从Graph API Explorer(here)自己尝试一些调用。

其他相关/相关链接:

http://stackoverflow.com/questions/2978761/facebook-graph-api-will-not-give-me-picture-data
http://stackoverflow.com/questions/7718704/requesting-picture-for-event

3 个答案:

答案 0 :(得分:19)

您必须使用field_expansion syntax

申请API

这些api请求有效:

$results = $facebook->api('/me', array('fields' => 'picture.height(300).width(300)'));

$results = $facebook->api('/me', array('fields' => 'picture.type(large)'));

答案 1 :(得分:4)

如Facebook上this bug所述,您可以通过新的API“field expansion”语法提出此请求。

这对我有用:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)

答案 2 :(得分:3)

我找到了一个解决方法 - 仍然可以通过FQL查询访问各种大小的个人资料图片:

$pic = $facebook->api(array('method'=>'fql.query', 'query'=>"SELECT pic_big FROM user WHERE uid=$fb_uid"));

(“pic_big”相当于“type = large” - 请参阅here)。

这仍然无法解释为什么GRAPH呼叫突然断开,或者为什么图像大小似乎不再可以通过Graph访问(我仍然想知道)...但至少有一些方式来获取其他尺寸的照片。

得热爱Facebook及其一流的可靠性......