php - 从用户获取 Facebook 个人资料图片(通过 Graph)——检测它是否为空白(即默认)图片?

标签 php facebook facebook-graph-api

我正在尝试获取在客户的 Facebook 页面上发表评论的人的个人资料照片,以便他们可以显示在网站等上。

我通过 /[page_name]/feed/ 图表调用获取用户 ID,并将其放入 URL 表单中,如下所示:

$id = $item['from']['id'];
$link = "http://graph.facebook.com/{$id}/picture?type=large";

它运行良好 - 我收到了一些个人资料图片,但有些看起来像这样:http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yp/r/yDnr5YfbJCH.gif

我只想显示真实的个人资料照片 - 有没有办法检测到这一点?

最佳答案

Graph API 确实包含一个标志,允许您检测用户的 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/)

更新: URI 已更改:type=large 不再有效,您现在必须像这样指定显式宽度/高度:

http://graph.facebook.com/[USERNAME]/picture?width=200&height=600

注意 "is_silhouette" 属性 - 它将是 truefalse。如果 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.";

关于php - 从用户获取 Facebook 个人资料图片(通过 Graph)——检测它是否为空白(即默认)图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984041/

相关文章:

php - codeigniter 指定限制为 NULL 在最新的 CI 版本 2.1.2 中不起作用

php - "Server sent charset (255) unknown to the client"将 MySQL 字符集设置为 utf8 w/o/etc/my.cnf?

html - 包含 facebook 喜欢和分享按钮两倍宽度的 Div

python - 如何使用 python 在 facebook 上写帖子

facebook - 如何在没有FBML的情况下发送Facebook礼物?

php - mysql和/或一起查询

javascript - 无法从 PHP 获取值到 Javascript

Android问题文本和图像,标签共享使用facebook sdk

javascript - 使用nodejs fbgraph 对 facebook Graph API 进行分页

android - 已安装应用程序时 Facebook 登录不起作用 : Unity3d