2012-08-16 117 views
7

根据Facebook的图形API文档(here),您可以通过网址,如访问用户的个人资料图片的各种尺寸:Facebook Graph API更改:图片类型(大小)不再有效?

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

你会发现,首先解析到URL中_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 
+0

除非它是一个偶发性问题不是影响所有用户/对象,现在看起来对我来说工作得很好。也许它是固定的? – DanH 2012-11-05 09:07:12

回答

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和其顶尖的可靠性......

+1

你有没有想过为后贴图片做同样的事情? – 2014-04-17 07:23:33

4

在Facebook中this bug描述,您可以通过新的API“field expansion”语法提出要求。

这个工作对我来说:

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

我真的很鄙视Facebook如何改变/打破“设计上”的东西,而不用在文档中提及它。无论如何,感谢您的提示 - 看起来像两种解决方法工作:) – Metal450 2012-10-05 01:22:51

+0

似乎总是返回完全相同的图像,无论你输入的大,中,小等。我能得到的项目列表,但宽度/高度没有足够的唯一通过准确地拉他们(他们似乎每个图像改变) – 2014-02-12 11:17:30

19

您必须请求API与field_expansion syntax

这些API请求的工作原理:

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

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

+0

我试过,但一个图片对象上 - 我得到了错误:未捕获 OAuthException:子域不会被画面 – 2015-03-27 11:10:45

+0

就像一个魅力的支持。谢谢 – 2016-01-23 07:02:56