我正在开发一个CMS,它可以从用户的Facebook URL(即http://facebook.com/users_unique_url)中获取用户的个人资料图像。我怎样才能做到呢?是否有一个facebook API调用,获取用户的个人资料图像URL,而不需要用户允许应用程序?


当前回答

获取图片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/

其他回答

通过这个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。

@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,而不是二进制内容:

$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/

2015年4月开始的工作PHP (HTTP GET)解决方案(不含PHP 5 SDK):

function get_facebook_user_avatar($fbId){
        $json = file_get_contents('https://graph.facebook.com/v2.5/'.$fbId.'/picture?type=large&redirect=false');
        $picture = json_decode($json, true);
        return $picture['data']['url'];
}

你可以在参数中更改“类型”:

广场:

最大宽度和高度为50像素。

最大宽度为50像素,最大高度为150像素。

正常的

最大宽度为100像素,最大高度为300像素。

最大宽度为200像素,最大高度为600像素。

简单的一行代码,保存完整尺寸的档案图像在您的服务器上。

<?php

copy("https://graph.facebook.com/FACEBOOKID/picture?width=9999&height=9999", "picture.jpg");

?>

只有在php.ini中启用了openssl,这才有效。