获取全尺寸的个人资料图片

53

有没有使用 Facebook API 获取完整大小个人资料图片的方式?

http://graph.facebook.com/{ID}/picture?type=large 这种方式太小了。

谢谢 :)

7个回答

127

将宽度或高度设置为任意大的数字:

https://graph.facebook.com/username_or_id/picture?width=9999

如果宽和高的数字相同,则该照片被裁剪为正方形。

不要认为这个数字有什么神奇的,它可能只是一个任意大的数字... - Michael
这仍然只是一个较小的图像。 - Foreever
3
太棒了!为什么 Facebook 没有明确的文档让我感到困扰。 - user240993
看起来它不再工作了,我收到了一个错误(GraphMethodException)。 - baptx

87

我认为我使用了最简单的方法来获取完整的个人资料图片。您可以获得完整的个人资料图片,或者您可以自己设置个人资料图片的尺寸:

$facebook->api(me?fields=picture.width(800).height(800))

您可以根据需要设置widthheight。虽然Facebook不会返回完全符合要求的大小,但它会返回他们库中最接近所需尺寸的图片。


6
发现一种方法:
$albums = $facebook->api('/' . $user_id . '/albums');
foreach($albums['data'] as $album){
    if ($album['name'] == "Profile Pictures"){
        $photos = $facebook->api('/' . $album['id'] . '/photos');
        $profile_pic = $photos['data'][0]['source'];
        break;
    }
}

4
如上所述,个人档案相册的封面照片似乎是一张高清个人头像。建议检查“profile”相册类型而非名称,因为名称在不同语言中可能不一致,但类型应该是一致的。
为减少请求数量/解析次数,您可以使用以下 FQL 查询语句: "select cover_object_id from album where type='profile' and owner = user_id"
然后,您可以使用以下方式构建图像 URL: "https://graph.facebook.com/" + cover_object_id + "/picture&type=normal&access_token=" + access_token
看起来,这张照片没有“large”类型,但“normal”类型仍然相当大。
如上所述,此照片可能比公共个人资料图片难以访问。您需要 user_photos 或 friend_photos 权限才能访问它。

2

使用JavaScript,您可以像这样获取完整尺寸的个人资料图片

将您的accessToken传递给getface()函数,该函数从您的FB.init调用中获取

function getface(accessToken){
  FB.api('/me/friends', function (response) {
    for (id in response.data) { 
        var homie=response.data[id].id         
        FB.api(homie+'/albums?access_token='+accessToken, function (aresponse) {
          for (album in aresponse.data) {
            if (aresponse.data[album].name == "Profile Pictures") {                      
              FB.api(aresponse.data[album].id + "/photos", function(aresponse) {
                console.log(aresponse.data[0].images[0].source); 
              });                  
            }
          }   
        });
    }
  });
}

2

对于Angular:

getUserPicture(userId) {   
FB.api('/' + userId, {fields: 'picture.width(800).height(800)'}, function(response) {
  console.log('getUserPicture',response);
});
}

-7

当Facebook上传头像时,它们会被缩小到125x125的尺寸,因此据我所知,您无法获得比这更大的图片。您获取的图片有多大?


5
真的吗?如果你点击一个个人资料,就可以看到完整的照片 :) - Richard
是的,但那张照片并不被归类为个人资料照片。Facebook会存储个人资料照片(125x125缩略图)以及原始照片。我认为你只能访问个人资料照片,因为其他照片更具私密性。 - ACarter
但是我的应用请求了用户图片权限? - Richard
哦,那我只能想到你提供的URL不是访问该图片的正确方式。 - ACarter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接