it-roy-ru.com

Facebook Graph API: получить большие картинки за один запрос

В настоящее время я использую Graph API Explorer , чтобы сделать некоторые тесты. Это хороший инструмент.

Я хочу получить список друзей пользователя с именами, идентификаторами и фотографиями друзей. Итак, я набираю:

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

Но картинка только 50х50, и я бы хотел увеличить ее в этом запросе.

Является ли это возможным ?

82
Martin

вам не нужно тянуть атрибут "изображение", хотя. есть гораздо более удобный способ, единственное, что вам нужно, это идентификатор пользователя, см. пример ниже;

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

постскриптум Тип определяет размер, который вы хотите

пожалуйста, имейте в виду, что при использовании токена с основными правами/me/friends будет возвращать список друзей только с атрибутами id + name

63
guleryuz

Как описано в эта ошибка на Facebook, теперь вы также можете запрашивать определенные размеры изображений через новый синтаксис API " field extension ".

Вот так:

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

Лучший способ получить всех друзей (которые, конечно, тоже используют приложение) с правильными размерами изображения - это использовать расширение поля , либо с одним из тегов размера (квадратный, маленький, нормальный, большой ):

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

(редактировать: это больше не работает)

... или вы можете указать ширину/высоту:

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

Кстати, вы также можете написать это так:

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

Измените массив полей id,name,picture на id,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"
      }
   }
}
33
Julian Mann

Вы можете установить размер картинки в пикселях, например так:

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

Аналогичным образом можно использовать параметр type

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

Из документация

тип enum {маленький, нормальный, альбом, большой, квадратный}

27
Agu Dondo

Я тщательно исследовал Graph API Explorer и наконец нашел full_picture

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

Постскриптум Я заметил, что full_picture не всегда обеспечивает полноразмерное изображение, которое я хочу. "вложения" делает

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

Вы также можете попробовать получить изображение, если вы хотите его на основе высоты или ширины

https://graph.facebook.com/user_id/picture?height=

OR

https://graph.facebook.com/user_id/picture?width=

Значения по умолчанию в пикселях, вам просто нужно указать значение int

19
Swaprks

Хм ... Я думаю, что нашел решение.

На самом деле, может просто запрос

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

В соответствии с http://developers.facebook.com/docs/reference/api/ (раздел "Изображения"), URL фотографий профиля может быть создан с помощью идентификатора пользователя.

Например, если предположить, что идентификатор пользователя находится в $ 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 изображения, поэтому, если у кого-то есть лучшее решение, я был бы рад узнать :)

9
Martin

Вы можете указать ширину и высоту в своем запросе к графику Facebook API: http://graph.facebook.com/user_id/picture?width=500&heigth=500

2
Alexey Kislitsin

Начиная с v2.7, /<picture-id>?fields=images выдаст вам список с изображениями разного размера, первый элемент - полноразмерное изображение.

Я не знаю ни одного решения для нескольких изображений одновременно.

2
maxbellec

В URL-адресах изображений, найденных в ответах Графика (" http://photos-c.ak.fbcdn.net/ "), просто замените "_s.jpg" по умолчанию на "_n.jpg". "(? нормальный размер) или" _b.jpg "(? большой размер) или" _t.jpg "(уменьшенное изображение).

Hacakable URL-адреса/REST API делают Интернет лучше.

1
Ronan

rest-fb users (квадратное изображение, большее разрешение): Connection myFriends = fbClient.fetchConnection ("me/friends", User.class, Parameter.with ("fields", "public_profile, email, first_name, last_name, пол, picture .width (100) .height (100) "));

1
sigi

Вы можете использовать full_picture вместо ключа изображения, чтобы получить полноразмерное изображение.

0
Khalil ur Rehman

Я думаю, что на данный момент единственный способ получить большие фотографии друзей - это использовать 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/..."
    }
  ]
}

Каждый URL является ссылкой на изображение размером 200x200 пикселей.

0
Paweł Gościcki

У меня та же проблема, но я попытался решить эту проблему. возвращает большое изображение. Это не идеальное решение, но вы можете попробовать это.

https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX

0
Ajay

попробуйте изменить размер изображения, изменив размер пикселя по URL в каждом объекте json следующим образом:

например я изменяю s480x480 на s720x720

До: https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s480x480/10454308_773207849398282_283493808478577207_n.jpg

После: https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849398282_283493808478577207_n.jpg

0
E_X

Я получил эту ошибку, когда сделал запрос с picture.type(full_picture):

"(# 100) Для поля 'picture': type должно быть одно из следующих значений: small, normal, album, large, square"

Когда я делаю запрос с 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 для запроса изображения пользователя не поддерживает изменение размера запрошенного изображения. Я думаю, что это дает ближайший размер изображения.

0
Ebleme

Вариант в стиле JS. Просто установите огромную ширину изображения, и вы получите самый большой вариант.

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