API Graph включает флаг, который позволяет вам определить, является ли аватар пользователя на Facebook аватаром по умолчанию ...
Вы можете сделать это, добавив &redirect=false
в конец URL-адреса вашего графика.
Например:
Обычный URL-адрес изображения, например
http://graph.facebook.com/[USERNAME]/picture?type=large
будет перенаправлять на фактический файл изображения, создавая впечатление возврата фактического изображения.
Но URL, такой как
http://graph.facebook.com/[USERNAME]/picture?type=large&redirect=false
вернет JSON - что-то вроде:
{"data": {
"url": "http://profile.ak.fbcdn.net/hprofile-ak-snc6/623549_1210877749_349605729_n.jpg",
"is_silhouette": false
}}
(источник: http://developers.facebook.com/docs/reference/api/using-pictures/)
UPDATE:
URI изменился: type=large
больше не работает, теперь вы должны указать явную ширину / высоту следующим образом:
http://graph.facebook.com/[USERNAME]/picture?width=200&height=600
Обратите внимание на атрибут "is_silhouette"
- это будет true
или false
. Если true
, изображение пользователя на Facebook будет по умолчанию .
Для принятия этого решения на «встроенной» основе потребуется cURL, и вы можете интегрировать его с вашим кодом примерно так:
// Setup
$id = $item['from']['id'];
$link = "http://graph.facebook.com/{$id}/picture?type=large";
// Get avatar info from FB via cURL
$url = $link. "&redirect=false";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$avatarInfo = curl_exec($ch);
curl_close($ch);
// Process cURL response
$isDefaultAvatar = false;
if ($avatarInfo)
{
$avatarInfo = json_decode($avatarInfo);
if (isset($avatarInfo->data->is_silhouette) && $avatarInfo->data->is_silhouette) $isDefaultAvatar = true;
}
// Output
echo "This " .($isDefaultAvatar ? "IS" : "IS NOT"). " a default avatar.";