我正在开发一个CMS,它可以从用户的Facebook URL(即http://facebook.com/users_unique_url)中获取用户的个人资料图像。我怎样才能做到呢?是否有一个facebook API调用,获取用户的个人资料图像URL,而不需要用户允许应用程序?
当前回答
@NaturalBornCamper,
好的代码!这里是一个简洁的代码函数这样的过程!
function get_raw_facebook_avatar_url($uid)
{
$array = get_headers('https://graph.facebook.com/'.$uid.'/picture?type=large', 1);
return (isset($array['Location']) ? $array['Location'] : FALSE);
}
这将返回原始的Facebook头像图像URL。那你想怎么处置就怎么处置吧!
其他回答
通过这个URL简单地获取数据:
http://graph.facebook.com/userid_here/picture
将userid_here替换为您想获取照片的用户的id。你也可以使用HTTPS。
可以使用PHP的file_get_contents函数读取URL并处理检索到的数据。
资源:
http://developers.facebook.com/docs/api
注意:在PHP .ini中,您需要确保OpenSSL扩展已启用,以便使用PHP的file_get_contents函数读取该URL。
博客文章“抓取Facebook图形对象的图片”可能会提供另一种解决方案。使用教程中的代码以及Facebook的Graph API及其PHP SDK库。
... 并且尽量不要使用file_get_contents(除非您已经准备好面对后果——参见file_get_contents vs curl)。
@NaturalBornCamper,
好的代码!这里是一个简洁的代码函数这样的过程!
function get_raw_facebook_avatar_url($uid)
{
$array = get_headers('https://graph.facebook.com/'.$uid.'/picture?type=large', 1);
return (isset($array['Location']) ? $array['Location'] : FALSE);
}
这将返回原始的Facebook头像图像URL。那你想怎么处置就怎么处置吧!
更新:
从2012年8月底开始,API已经更新,允许您检索不同大小的用户头像。添加可选的宽度和高度字段作为URL参数:
https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT
其中WIDTH和HEIGHT是您请求的维度值。
这将返回一个最小宽度x高度的头像,同时尝试保持纵横比。例如,
https://graph.facebook.com/redbull/picture?width=140&height=110
返回
{
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/s148x148/2624_134501175351_4831452_a.jpg",
"width": 148,
"height": 117,
"is_silhouette": false
}
}
最后更新
要获取用户的头像,请呼叫
https://graph.facebook.com/USER_ID/picture
其中USER_ID可以是用户id号或用户名。
要获取特定大小的用户头像,请调用
https://graph.facebook.com/USER_ID/picture?type=SIZE
哪里SIZE应该替换为其中一个单词
square
small
normal
large
这取决于你想要的尺寸。
这个调用将返回一个URL到单个图像,其大小基于您所选择的类型参数。
例如:
https://graph.facebook.com/USER_ID/picture?type=small
返回图像的一个小版本的URL。
API只指定配置文件图像的最大大小,而不是实际大小。
广场:
最大宽度和高度为50像素。
小
最大宽度为50像素,最大高度为150像素。
正常的
最大宽度为100像素,最大高度为300像素。
大
最大宽度为200像素,最大高度为600像素。
如果你调用默认的USER_ID/picture,你会得到方形类型。
澄清
如果你打电话(如上例所示)
https://graph.facebook.com/redbull/picture?width=140&height=110
如果你使用的是Facebook sdk的请求方法,它会返回一个JSON响应。否则它将返回图像本身。要始终检索JSON,添加:
&redirect=false
像这样:
https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false
获取图片URL,而不是二进制内容:
$url = "http://graph.facebook.com/$fbId/picture?type=$size";
$headers = get_headers($url, 1);
if( isset($headers['Location']) )
echo $headers['Location']; // string
else
echo "ERROR";
你必须使用你的FACEBOOK ID,而不是用户名。你可以在那里获得你的facebook id:
http://findmyfbid.com/
推荐文章
- 在PHP单元测试执行期间,如何在CLI中输出?
- 在PHP中使用heredoc的优势是什么?
- PHP中的echo, print和print_r有什么区别?
- 如何将XML转换成PHP数组?
- 如何将对象转换为数组?
- 从IP地址获取位置
- 获取数组值的键名
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- PHP -获取bool值,当为false时返回false
- 在foreach中通过引用传递
- 如何触发命令行PHP脚本的XDebug分析器?
- 如何找出如果你使用HTTPS没有$_SERVER['HTTPS']
- 更好的方法检查变量为null或空字符串?
- 当使用Composer的开发/生产开关时,如何正确部署?
- 自动删除Laravel (Eloquent ORM)中的相关行