Согласно документации 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, которое является значением по умолчанию, если «тип» не является указано. В результате я больше не могу найти способ запроса большого изображения в 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. Вы сами можете попробовать некоторые из вызовов из API-интерфейса Graph API ( здесь ).
Другие связанные / релевантные ссылки:
http://stackoverflow.com/questions/2978761/facebook-graph-api-will-not-give-me-picture-data http://stackoverflow.com/questions/7718704/requesting-picture-for-event
Вы должны запросить API с синтаксисом field_expansion
Эти запросы api работают:
$results = $facebook->api('/me', array('fields' => 'picture.height(300).width(300)'));
$results = $facebook->api('/me', array('fields' => 'picture.type(large)'));
Как описано в этой ошибке на Facebook, вы можете запросить это через новый синтаксис расширения поля API.
Это работает для меня:
https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
Я нашел обходное решение – изображения профиля различных размеров могут быть доступны через запрос 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 и их первоклассную надежность …