API Graph Facebook не предоставляет полноразмерные изображения, хотя аксессор называется full_picture - Как получить реальную полную картинку?
Мне известно о многих существующих вопросах о API Graph FB и о том, как получить полноразмерные изображения.
Но многие из них связаны с получением изображений профиля пользователя, на которые отвечают "/ full_image
в вашем поисковом запросе ".
Ну, с этого момента моя проблема начинается. full_image
на самом деле не полное изображение. Он ограничен разрешением 720х720 пикселей.
Давайте посмотрим на пример: исследуйте эту картинку из SPIEGEL ONLINE в Facebook API Graph Explorer.
Указанный путь для запроса API Graph:
/38246844868_10154299256109869?fields=full_picture,picture,permalink_url,type,object_id
Ответ следующий:
{
"full_picture": "https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg?oh=20cc415e7931b8eb8a6228ab253bfa53&oe=57E23B8B",
"picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/13450864_1068539139897737_5236884236245491903_n.jpg?oh=37c4263e047f841da7243c040a4f279d&oe=57C6469E",
"permalink_url": "https://www.facebook.com/spiegelonline/posts/10154299256109869",
"type": "photo",
"object_id": "1068539139897737",
"id": "38246844868_10154299256109869"
}
Как вы можете видеть, я просил picture
(это просто большой палец) и полное изображение, проиндексированное full_picture
, К сожалению, эта картинка не полная, а измененная. В URL-адресе изображения даже упоминается, что оно максимально 720x720.
При посещении страницы Facebook за permalink_url
Вы попадаете на пост с изображением.
Вот и мы: https://www.facebook.com/spiegelonline/posts/10154299256109869
Открыв опубликованное изображение в полноэкранном режиме, а затем щелкнув его правой кнопкой мыши, чтобы отобразить файл изображения, вы увидите, что изображение будет намного больше, чем 720x720.
Вот оно: https://scontent-frt3-1.xx.fbcdn.net/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg
Пожалуйста, сравните URL-адрес с URL-адресом конечной точки API, как показано выше. Даже серверы разные. Таким образом, не существует простого решения, заменив "_n" на "_o", как упомянуто в нескольких других вопросах здесь, на SO.
У меня вопрос: как получить URL-адрес полноразмерного изображения с помощью Graph API?
TL; DR: API Graph Facebook, похоже, предоставляет измененные изображения, размещенные в ленте страницы, получая к ним доступ с помощью full_image
, Итак, как получить реальное полное (то есть неизмененное) изображение.
1 ответ
Я наконец-то нашел решение, поиграв снова с Graph API Explorer. И это намного проще, чем я думал.
Все, что вам нужно сделать, это следующие несколько шагов:
- Просто запросите этот путь (на этот раз без
full_picture
Accessor, толькоobject_id
здесь важно):
/38246844868_10154299256109869?fields=object_id
- Хватай
object_id
из ответа API:
{
"object_id": "1068539139897737",
"id": "38246844868_10154299256109869"
}
В этом примере это "1068539139897737"
,
- Теперь просим всех
images
для вышеobject_id
:
/1068539139897737?fields=images
- Ответом является JSON, например:
{
"images": [
{
"height": 2048,
"source": "https://scontent.xx.fbcdn.net/v/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg?oh=e923e167d258e77c12caf422d98b44aa&oe=59968118",
"width": 1536
},
{
"height": 1280,
"source": "https://scontent.xx.fbcdn.net/v/t31.0-8/p960x960/13422344_1068539139897737_5236884236245491903_o.jpg?oh=7a5086e29957b222c2fd1136f3640c98&oe=598633CD",
"width": 960
},
// … many others in between here …
{
"height": 225,
"source": "https://scontent.xx.fbcdn.net/v/t1.0-0/p75x225/13450864_1068539139897737_5236884236245491903_n.jpg?oh=26d94247c4e34a69fb0db3fb1ae213b5&oe=599353F9",
"width": 168
}
],
"id": "1068539139897737"
}
- От
images
список, отсортированный по размеру, просто возьмите самую первую запись. Получить егоsource
- et voilà - это полная картина.