7

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

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

您会注意到第一个解析为以 _t.jpg(小缩略图)结尾的 url,第二个解析为以 _n.jpg(大图像)结尾的 URL。到目前为止,一切都很好。等效地,我们应该能够像这样查询这些图像:

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(此处)自己尝试一些调用。

其他相关/相关链接:

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

3 回答 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)'));

于 2012-11-12T14:38:51.960 回答
4

如Facebook 上的这个 bug中所述,您可以通过新的 API“字段扩展”语法请求此操作。

这对我有用:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
于 2012-10-04T18:47:58.727 回答
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 和他们一流的可靠性......

于 2012-08-16T18:37:42.577 回答