我正在开发一个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。那你想怎么处置就怎么处置吧!

其他回答

你关心头像大小吗?在使用PHP实现登录Facebook时。我们将向您展示在Facebook PHP SDK中获得大尺寸头像的简单方法。此外,您还可以获得自定义大小的Facebook个人资料的图像。

使用下面的代码行设置头像尺寸。

$userProfile = $facebook->api('/me?fields=picture.width(400).height(400)');

查看这个帖子:http://www.codexworld.com/how-to-guides/get-large-size-profile-picture-in-facebook-php-sdk/

更新:

从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

一种方法是使用Gamlet在他的回答中发布的代码:

保存为curl.php 然后在你的文件中: 需要“curl.php”; 美元的照片= " https://graph.facebook.com/me/picture?access_token= "。美元的会话(“access_token”); $sample = new sfFacebookPhoto; $thephotoURL = $sample->getRealUrl($photo); echo $ thephotoURL;

我想我应该张贴这个,因为我花了一些时间来弄清楚细节……即使个人资料照片是公开的,你仍然需要有一个访问令牌在那里,当你卷曲它。

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

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