Facebook Graph API:在一个请求中获取更大的图片


88

我目前正在使用Graph API Explorer进行一些测试。那是个好工具。

我想获取用户的朋友列表,以及朋友的姓名,身份证和图片。所以我输入:

https://graph.facebook.com/me/friends?fields=id,picture,name

但是图片只有50x50,我希望在此请求中提供更大的图片。

可能吗 ?

Answers:


69

您无需拉“图片”属性。还有更方便的方法,您唯一需要的是userid,请参见下面的示例;

https://graph.facebook.com/user_id/picture?type=large

ps类型定义所需的大小

请记住,使用具有基本权限的令牌,/ me / friends将仅返回具有id + name属性的朋友列表


1
但是我不同意你的最后一句话:有了基本许可,您可以访问超过id + name属性,例如:graph.facebook.com/btaylor
Martin

28
嗯,“一个请求”呢?
Iulian Onofrei 2014年

4
您还可以使用图片的full_picture instat。
Bo Pennings

“ message”:“对于v2.3及更高版本,不推荐使用(#12)图片边缘”,
Toolkit

198

如Facebook上此错误所述,您现在还可以通过新的API“ 字段扩展 ”语法请求特定的图像尺寸。

像这样:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)

27
确实。fields = picture.width(640)甚至更好。
kaay 2014年

6
似乎Facebook Graph API更改了其api。当我尝试使用您的建议时,Facebook回复“图片不支持子字段”。
Phat H. VU 2014年

2
收到错误:{“错误”:{“消息”:“不支持的获取请求。请阅读developer.facebook.com/docs/graph-api上的Graph API文档”,“ type”:“ GraphMethodException”,“ code”: 100}}
Vineesh TP 2014年

13
请参阅?field = full_picture,2.x查询的附件
凯文

3
随着新的Facebook更改,无法获得更大的图像。任何提示有人吗?
shadab.tughlaq '16

81

使所有朋友(当然也正在使用App的朋友)拥有正确的图片大小的最好方法是使用字段扩展,或者使用其中一个大小标签(正方形,小,普通,大):

/me/friends?fields=picture.type(large)

(编辑:这不再起作用了)

...或者您可以指定宽度/高度:

me/friends?fields=picture.width(100).height(100)

顺便说一句,您也可以这样写:

me?fields=friends{picture.type(large)}

1
thanx的信息,我将更新答案。但是,full_picture似乎不适用于朋友:/ me / friends?fields = full_picture-您知道怎么可能吗?
luschn

34

将字段数组更改id,name,pictureid,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

结果:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}

7
200 x 200的尺寸是多少?
AlxVallejo

1
在最新(2.10)中,Graph API没有“大”尺寸:Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza

33

您可以设置图片的大小(以像素为单位),如下所示:

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

以类似的方式,type可以使用参数

{user-id}/?fields=name,picture.type(large)

文档中

键入枚举{小,普通,相册,大,正方形}



20

我对Graph API Explorer进行了广泛的研究,最终发现full_picture

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

PS我注意到full_picture不会总是提供我想要的全尺寸图像。“附件”确实

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments

这仅显示宽度:720px。您只能找到这样的大照片。要查看最大的graph.facebook.com/photo_id,您可以看到6张不同尺寸的照片。
gokhan 2015年

我刚刚使用好友端点测试了此方法,但没有成功
luschn

9

嗯...我想我已经找到了解决方案。

其实,可以只要求

https://graph.facebook.com/me/friends?fields=id,name

根据http://developers.facebook.com/docs/reference/api/(“图片”部分),可以使用用户ID建立个人资料照片的网址

例如,假设用户ID在$ id中:

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

但这不是最终的图像URL,所以如果有人有更好的解决方案,我将很高兴知道:)



3

您可以在对Facebook图形API的请求中指定widthheighthttp://graph.facebook.com/user_id/picture?width=500&height=500


2

来自v2.7/<picture-id>?fields=images将为您提供具有不同尺寸图像的列表,第一个元素是全尺寸图像。

我不知道一次解决多个图像的任何解决方案。


1

在“图形”响应中找到的图片URL(“ http://photos-c.ak.fbcdn.net/ ”中)中,只需将默认的“ _s.jpg”替换为“ _n.jpg”(正常大小)即可;或者“ _b.jpg”(?大尺寸)或“ _t.jpg”(缩略图)。

可访问的URL / REST API使网络变得更好。


1
似乎总是给出“现在处理您的请求时出错。参考号#50.27f74317.14274.604fb0”
凯文(Kevin)

1

rest-fb用户(方形图像,更大分辨率):连接myFriends = fbClient.fetchConnection(“我/朋友”,User.class,Parameter.with(“字段”,“ public_profile,电子邮件,名字,姓氏,性别,图片) .width(100).height(100)“));


1

当我向提出要求时,出现此错误picture.type(full_picture)

“(#100)对于“图片”字段:类型必须为以下值之一:小,普通,相册,大,正方形”

当我让与请求picture.type(album)picture.type(square),以50x50像素大小的图像回复我。

当我通过发出请求时picture.type(large),以200x200像素大小的图像回应我。

当我以发出请求时picture.width(800),以477x477像素大小的图像回应我。

使用picture.width(250),响应为320x320。

使用picture.width(50),响应为50x50。

使用picture.width(100),响应为100x100。

使用picture.width(150),响应为160x160。

我认为,当用户首次添加该照片时,facebook提供的图像大小会有所不同。

我在这里看到的用于请求用户图像的API不支持调整请求图像的大小。我认为它可以提供最接近图像的尺寸。


没错...“ picture.type(large)”也给了我200x200-不是很大,我必须说
James

0

我认为,到目前为止,获取好友大图片的唯一方法是使用FQL。首先,您需要获取朋友列表:

https://graph.facebook.com/me/friends

然后解析此列表并提取所有朋友ids。有了它,只需执行以下FQL查询:

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200这只是示例性的大小,您可以输入任何内容。您应该得到以下响应:

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

每个网址都是指向200x200px图片的链接。




0

JS样式的变体。只需设置巨大的大图片宽度,您将获得最大的变体。

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.