根据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
答案 0 :(得分:19)
这些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及其一流的可靠性......