Graph API包括一个标记,允许您检测用户的Facebook头像是否为默认头像...
您可以通过在Graph图像URL末尾添加&redirect=false
来实现此目的。
例如:
正常的图像URL如下:
http://graph.facebook.com/[USERNAME]/picture?type=large
将重定向到实际的图像文件,给人返回实际图像的印象。
但是像这样的网址
http://graph.facebook.com/[USERNAME]/picture?type=large&redirect=false
{"name": "John", "age": 30}
将返回JSON格式的数据 - 类似于:
{"name": "John", "age": 30}
{"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/)
更新:
URI已更改:type=large
不再起作用,您现在必须指定明确的宽度/高度,如下所示:
http://graph.facebook.com/[USERNAME]/picture?width=200&height=600
请注意"is_silhouette"
属性 - 它将是true
或false
。如果是true
,用户的Facebook图像是一个默认图像。
基于"inline"的判断将需要cURL,并且您可以将其与您的代码集成,类似于以下内容:
$id = $item['from']['id'];
$link = "http://graph.facebook.com/{$id}/picture?type=large";
$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);
$isDefaultAvatar = false;
if ($avatarInfo)
{
$avatarInfo = json_decode($avatarInfo);
if (isset($avatarInfo->data->is_silhouette) && $avatarInfo->data->is_silhouette) $isDefaultAvatar = true;
}
echo "This " .($isDefaultAvatar ? "IS" : "IS NOT"). " a default avatar.";
is_silhouette
值来完成此操作的描述。 - Matt Rabe