Php Facebook API-如何获得Facebook用户';通过Facebook API创建个人资料图像(无需用户“允许”应用程序)

Php Facebook API-如何获得Facebook用户';通过Facebook API创建个人资料图像(无需用户“允许”应用程序),php,facebook,Php,Facebook,我正在开发一个从用户的Facebook(即,)上获取用户个人资料图像的应用程序。我怎样才能做到这一点?是否存在一个Facebook API调用,可以在用户不需要允许应用程序的情况下获取用户的配置文件图像URL?只需通过以下方式获取数据: 将此处的userid_替换为要获取照片的用户的id。您也可以使用HTTPS 您可以使用PHP的file\u get\u contents函数读取该URL并处理检索到的数据 资源: 注意:在php.ini中,您需要确保已启用扩展名,以便使用php的文件获取内容

我正在开发一个从用户的Facebook(即,)上获取用户个人资料图像的应用程序。我怎样才能做到这一点?是否存在一个Facebook API调用,可以在用户不需要允许应用程序的情况下获取用户的配置文件图像URL?

只需通过以下方式获取数据:

将此处的
userid_
替换为要获取照片的用户的id。您也可以使用HTTPS

您可以使用PHP的
file\u get\u contents
函数读取该URL并处理检索到的数据

资源:

注意:
php.ini
中,您需要确保已启用扩展名,以便使用php的
文件获取内容
功能来读取该URL。

有办法做到这一点;)

感谢“”:


一种方法是在他的答案中使用代码:

  • 将其另存为
    curl.php

  • 然后在您的文件中:

    require 'curl.php';
    
    $photo="https://graph.facebook.com/me/picture?access_token=" . $session['access_token'];
    $sample = new sfFacebookPhoto;
    $thephotoURL = $sample->getRealUrl($photo);
    echo $thephotoURL;
    
我想我会发布这个,因为我花了一点时间来弄清楚细节。。。即使个人资料图片是公开的,您仍然需要在其中有一个访问令牌,以便在访问时获得它。

这篇博客文章可能会提供另一种形式的解决方案。将教程中的代码与Facebook及其PHP SDK库一起使用

。。。并尽量不要使用文件获取内容(除非您准备好面对后果-请参阅)。

以显示:

50x50像素 其中$fid是您在Facebook上的用户id

注意:对于标记为“18+”的图像,您需要18+用户的有效访问令牌:

<img src="//graph.facebook.com/{{fid}}/picture?access_token={{access_token}}">

2015年更新:
无法使用用户名查询Graph API v2.0,您应始终使用
用户ID

获取图像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:


更新

从2012年8月底开始,API已经更新,允许您检索不同大小的用户档案图片。添加可选的宽度和高度字段作为URL参数:

https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT
其中,
WIDTH
HEIGHT
是您请求的尺寸值

这将返回最小尺寸为
WIDTH
x
HEIGHT
的配置文件图片,同时尝试保留纵横比。比如说,

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\u ID
可以是用户ID号或用户名

要获取特定大小的用户配置文件图片,请调用

https://graph.facebook.com/USER_ID/picture?type=SIZE
其中,
SIZE
应替换为以下单词之一

square
small
normal
large
取决于你想要的尺寸

此调用将返回一个图像,其大小基于您选择的类型参数

例如:

https://graph.facebook.com/USER_ID/picture?type=small
返回图像小版本的URL

API仅指定配置文件图像的最大大小,而不是实际大小

正方形:

最大宽度和高度为50像素

小的

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

正常的

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

大的

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

如果调用默认的用户ID/图片,则会得到方形类型

澄清

如果您打电话(根据上述示例)

如果您使用的是Facebook SDK请求方法之一,它将返回响应。否则它将返回图像本身。要始终检索JSON,请添加:

&redirect=false
像这样:

https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false

我在想-也许ID将是一个有用的工具。每次用户创建一个新帐户时,它都应该得到一个更高的ID。我在谷歌上搜索发现,有一种方法可以通过ID来估计帐户创建日期。metadatascience.com的Massoud Seifi收集了一些关于它的好数据

阅读本文:

以下是一些要下载的ID:

@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);
}

这将返回原始的脸谱头像URL。那就随你的便吧

在服务器上保存完整大小的配置文件映像的简单单行代码

<?php

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

?>


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

将此作为注释添加到接受的答案中,但认为它值得一个更长的解释。从2015年4月左右开始,这可能会提高几次

从graph api的V2开始,接受的答案不再使用用户名。因此,现在您首先需要userid,并且您不能再使用用户名来获取它。更复杂的是,出于隐私原因,Facebook现在正在更改每个应用程序的用户ID(请参见和),因此您必须进行某种适当的身份验证才能检索您可以使用的用户ID。从技术上讲,配置文件pic仍然是公开的,可以在/userid/picture上获得(请参阅文档at和此示例user:),但是仅仅根据用户的配置文件确定用户的标准userid似乎是不可能的-您的应用程序需要让他们批准与应用程序的交互,这对于我的用例来说是不可能的(只是在他们的FB个人资料链接旁边显示个人资料图片)太过分了

如果有人想出了一种基于用户名获取配置文件图片的方法,或者,如何获取用于检索配置文件图片的用户ID(即使是交替的用户ID),请共享!同时,旧的图形url在2015年4月之前仍然有效。

从2015年4月开始使用PHP(HTTP get)解决方案(无PHP 5 SDK):

您可以更改参数中的“类型”:

正方形:

最大宽度和高度为50像素

小的

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

正常的

最大值
https://graph.facebook.com/redbull/picture?width=140&height=110
&redirect=false
https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false
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);
}
<?php

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

?>
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'];
}
URI  = https://graph.facebook.com/{}/picture?width=500'.format(uid)