如何确定Facebook用户是否上传了个人资料图片或其默认图片?

如何确定Facebook用户是否上传了个人资料图片或其默认图片?,facebook,api,detect,image,facebook-fql,Facebook,Api,Detect,Image,Facebook Fql,有没有办法知道用户是否上传了一张图片到个人资料中,或者它是否通过Facebook或其他什么东西拥有默认的用户图片?您可以使用下面的Python脚本(没有提到任何编程语言)使其正常工作 urllib.urlopen('https://graph.facebook.com/<PROFILE_ID>/picture?access_token=%s' % access_token).geturl() 女性: https://fbcdn-profile-a.akamaihd.net/stat

有没有办法知道用户是否上传了一张图片到个人资料中,或者它是否通过Facebook或其他什么东西拥有默认的用户图片?

您可以使用下面的Python脚本(没有提到任何编程语言)使其正常工作

urllib.urlopen('https://graph.facebook.com/<PROFILE_ID>/picture?access_token=%s' % access_token).geturl()
女性:

https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/y9/r/IB7NOFmPw2a.gif

我希望这会有所帮助。

从我对Facebook API的实验来看,人们似乎必须实际获得图片,才能判断它是否是静态默认图片

在撰写本文时,Facebook上上传的所有照片似乎都已转换为JPEG格式,而静态默认图片为GIF格式。(顺便说一句,这与某些缩略图大小不一致)

查找特定的GIF文件或特定的URL路径是不可靠的(请注意,其中涉及CDN URL,并且男性和女性有不同的静态文件)。假设Facebook没有对他们的整个个人资料照片数据库进行重新编码,我想寻找GIF已经足够可靠了

下面是一个PHP函数示例。我已经在我的120个Facebook好友中成功地测试了它,而且它似乎可以胜任这项工作

public static function hasProfilePicture($fbuid) 
{
    /* Really stupid method to test if Facebook user has real profile picture
    * based on Facebook returning a GIF image when you request a large photo.  
    * Use with care - for every profile there's an outgoing request! */ 
    $r = get_headers("http://graph.facebook.com/$fbuid/picture?type=square"); 
    return !array_search("Content-Type: image/gif",$r);
}

如果用户没有照片,则当您使用指定的“照片”字段请求用户对象时,“is_剪影”字段将为真

请求示例:

https://graph.facebook.com/username?fields=picture
答复:

{
   "id": "100002095576350",
   "picture": {
      "data": {
         "url": "http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif",
         "is_silhouette": true
      }
   }
}
快速脏PHP函数:

function facebook_user_has_photo($username_or_id){

        $request = file_get_contents('https://graph.facebook.com/'.$username_or_id.'?fields=picture');

        if($request):

            $user = json_decode($request);

            if($user && !$user->picture->data->is_silhouette) return true;

        endif;

        return false;

}

对于PHP开发人员,您可以使用:
并在标题中查找位置:)对于男性和女性,有不同的图片。因此,找出男性/女性的位置。也可以通过校验和来检查文件。你认为呢,多久改变一次这些gif文件的位置?我不认为。。。他们需要改变。。。如果仍然如此,那么您需要继续检查这些位置。
{
   "id": "100002095576350",
   "picture": {
      "data": {
         "url": "http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif",
         "is_silhouette": true
      }
   }
}
function facebook_user_has_photo($username_or_id){

        $request = file_get_contents('https://graph.facebook.com/'.$username_or_id.'?fields=picture');

        if($request):

            $user = json_decode($request);

            if($user && !$user->picture->data->is_silhouette) return true;

        endif;

        return false;

}