我正在开发一个CMS,用于从他们的Facebook URL(即http://facebook.com/users_unique_url)获取用户的 Profiles 图片 . 我怎么能做到这一点?是否有一个Faceboook API调用,用于获取用户的配置文件图像URL,而无需用户需要允许该应用程序?
我正在开发一个CMS,用于从他们的Facebook URL(即http://facebook.com/users_unique_url)获取用户的 Profiles 图片 . 我怎么能做到这一点?是否有一个Faceboook API调用,用于获取用户的配置文件图像URL,而无需用户需要允许该应用程序?
14 回答
@NaturalBornCamper,
好的代码!这是一个干净利落的代码功能!
这将返回 raw Facebook头像图片网址 . 随便随便做任何你想做的事!
只需通过URL获取数据:
http://graph.facebook.com/userid_here/picture
将
userid_here
替换为您要获取照片的用户的ID . 您也可以使用HTTPS .您可以使用PHP的
file_get_contents
函数来读取该URL并处理检索到的数据 .Resource:
http://developers.facebook.com/docs/api
Note: 在
php.ini
中,您需要确保启用OpenSSL扩展名以使用PHP的file_get_contents
函数来读取该URL .显示:
50 x50像素
200像素宽度
保存(使用PHP)
注意: Don't use this . 请参阅下面的@ Foreever评论 .
其中$ fid是您在Facebook上的用户ID .
注意:如果图像标记为“18”,您将需要来自18位用户的有效access_token:
更新2015年:
无法使用用户名查询Graph API v2.0,您应始终使用
userId
.UPDATE :
从2012年8月底开始,API已更新,允许您检索不同大小的用户 Profiles 照片 . 将可选的宽度和高度字段添加为URL参数:
其中
WIDTH
和HEIGHT
是您请求的维度值 .在尝试保留纵横比时,这将返回最小尺寸为
WIDTH
xHEIGHT
的 Profiles 照片 . 例如,回报
END UPDATE
要获取用户的 Profiles 照片,请致电
其中
USER_ID
可以是用户标识号或用户名 .要获取特定大小的用户 Profiles 照片,请致电
其中
SIZE
应替换为其中一个单词取决于你想要的大小 .
此调用将URL返回到单个图像,其大小基于您选择的类型参数 .
例如:
返回一个小版本图像的URL .
API仅指定配置文件图像的最大大小,而不是实际大小 .
广场:
小
正常
大
如果您调用默认的USER_ID /图片,则会获得方形类型 .
CLARIFICATION
如果你打电话(如上例所示)
如果您正在使用其中一种Facebook SDK请求方法,它将返回JSON响应 . 否则它将返回图像本身 . 要始终检索JSON,请添加:
像这样:
要获取图像URL,请不要使用二进制内容:
您必须使用您的FACEBOOK ID,而不是USERNAME . 你可以在那里获得你的Facebook ID:
http://findmyfbid.com/
简单的单行代码,用于在服务器上保存完整大小的配置文件图像 .
这只有在php.ini中启用openssl时才有效 .
您可以通过online facebook id finder tool获取配置文件URI
您还可以传递类型参数,其中可能的值为small,normal,large,square .
参考official documentation
添加此作为对已接受答案的评论,但认为它应该得到更长的解释 . 从2015年4月左右开始,这可能会提高几次 .
从图表api的V2开始,接受的答案不再使用用户名 . 所以现在你首先需要userid,你不能再使用用户名来获取它 . 为了进一步复杂化,出于隐私原因,Facebook现在正在更改每个应用程序的用户ID(请参阅https://developers.facebook.com/docs/graph-api/reference/v2.2/user/和https://developers.facebook.com/docs/apps/upgrading/#upgrading_v2_0_user_ids),因此您必须进行某种正确的身份验证才能检索可以使用的用户ID . 从技术上讲, Profiles 图片仍然是公开的,可以在/ userid / picture上找到(请参阅https://developers.facebook.com/docs/graph-api/reference/v2.0/user/picture上的文档和此示例用户:http://graph.facebook.com/v2.2/4/picture?redirect=0)但是根据他们的 Profiles 来确定用户的标准用户ID似乎是不可能的 - 您的应用需要让他们批准与应用程序的交互,对于我的用例(只显示他们的FB配置文件链接旁边的配置文件图片)是过度的 .
如果有人想出了一种方法来获取基于用户名的 Profiles 图片,或者如何获得用户ID(甚至是交替的)用于检索 Profiles 图片,请分享!与此同时,旧的图表网址仍然有效,直到2015年4月 .
一种方法是在他的代码中使用代码Gamlet posted回答:
另存为
curl.php
然后在你的文件中:
我想我会发布这个,因为我花了一些时间来弄清楚细节......即使 Profiles 图片是公开的,你仍然需要在那里有一个访问令牌来获取它curl它 .
有办法做到这一点;)
感谢“http://it.toolbox.com/wiki/index.php/Use_curl_from_PHP_-_processing_response_headers”:
从2015年4月开始使用PHP(HTTP GET)解决方案(不使用PHP 5 SDK):
您可以在参数中更改'type':
广场:
小
正常
大
我在想 - 也许 ID 将是一个有用的工具 . 每次用户创建新帐户时,都应获得更高的ID . 我用谷歌搜索,发现有一种方法可以通过ID估算帐户创建日期,而来自metadatascience.com的Massoud Seifi收集了一些关于它的好数据 .
阅读这篇文章:
http://metadatascience.com/2013/03/11/inferring-facebook-account-creation-date-from-facebook-user-id/
以下是一些要下载的ID:
http://metadatascience.com/2013/03/14/lookup-table-for-inferring-facebook-account-creation-date-from-facebook-user-id/
博客文章Grab the Picture of a Facebook Graph Object可能会提供另一种形式的解决方案 . 使用教程中的代码以及Facebook的Graph API及其PHP SDK库 .
...并尽量不要使用 file_get_contents (除非你准备好面对后果 - 见file_get_contents vs curl) .
您是否关注 Profiles 图片大小?在使用PHP实现登录Facebook时 . 我们将向您展示在Facebook PHP SDK中获取大尺寸图片的简单方法 . 此外,您还可以获得Facebook Profiles 的自定义尺寸图像 .
使用以下代码行设置配置文件图片尺寸 .
$ 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/