Php Facebook API-如何获得Facebook用户';通过Facebook API创建个人资料图像(无需用户“允许”应用程序)
我正在开发一个从用户的Facebook(即,)上获取用户个人资料图像的应用程序。我怎样才能做到这一点?是否存在一个Facebook API调用,可以在用户不需要允许应用程序的情况下获取用户的配置文件图像URL?只需通过以下方式获取数据: 将此处的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的文件获取内容
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
xHEIGHT
的配置文件图片,同时尝试保留纵横比。比如说,
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)