Facebook图形API更改:图片类型(大小)不再起作用?

7
根据Facebook的Graph API文档(这里),你可以通过以下URL访问用户的不同尺寸的个人资料图片:
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

这个格式在过去的几个月中一直表现正常,直到几天前它突然完全忽略了"type"参数——现在所有内容都解析成以_q.jpg结尾的图像,这是如果没有指定"type"参数的默认值。因此,我无法再用PHP查询大图像(我的真正问题)。它以前是这样工作的:

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

但是如上所述,“type”已经开始被忽略。我花了几个小时查阅他们的文档,但是没有找到任何有关发生了什么变化或者应该采用“新”的方式的参考 - 可以提供任何指针将不胜感激...

编辑:

以下任何一项都不起作用(没有返回值):

$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 (这里) 中尝试一些调用。
其他相关链接:
https://dev59.com/vk7Sa4cB1Zd3GeqP1z1x
http://stackoverflow.com/questions/7718704/requesting-picture-for-event

除非这是一个不影响所有用户/对象的零星问题,否则现在它似乎对我来说工作正常。也许已经修复了? - DanH
3个回答

19

你必须使用field_expansion语法进行API请求。

以下是这些API请求的示例:

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

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


我尝试在图片对象上执行此操作,但是出现了错误: Uncaught OAuthException: Subfields are not supported by picture - Tobias Christian Jensen

4

如Facebook上的此bug所述,您可以通过新API“字段扩展”语法进行请求。

以下方法适用于我:

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

3
我非常讨厌 Facebook 的所谓“设计更改”,而他们甚至不在文档中提到。无论如何,感谢你的提示 - 看起来两种解决方法都有效 :) - J23
似乎总是返回完全相同的图像,无论您键入大、中、小等。我可以获取项目列表,但宽度/高度不足以准确地提取它们(它们似乎会随着每个图像而改变)。 - Damian Keeghan

3
我发现了一个变通方法——通过FQL查询仍然可以访问各种尺寸的个人资料图片:
$pic = $facebook->api(array('method'=>'fql.query', 'query'=>"SELECT pic_big FROM user WHERE uid=$fb_uid"));

("pic_big"相当于"type=large" - 请参见此处。)

然而,这并不解释为什么GRAPH调用突然中断,也不解释为什么图像大小似乎无法通过Graph访问(我仍然想知道)...但至少有某种方法可以获得其他尺寸的照片。

绝对值得我们爱的Facebook和他们一流的可靠性...


1
你有想过对于附带在帖子中的图片做同样的事情吗? - Grigory Kornilov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接