API Graph Facebook не предоставляет полноразмерные изображения, хотя аксессор называется full_picture - Как получить реальную полную картинку?

Мне известно о многих существующих вопросах о API Graph FB и о том, как получить полноразмерные изображения.

Но многие из них связаны с получением изображений профиля пользователя, на которые отвечают "/ / picture" или что-то подобное. Мне нужно знать, как получить размещенные изображения из фида страниц, так что это не то, что я ищу. Тогда есть вопросы с ответом "использовать 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.

Вот он: https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg?oh=20cc415e7931b8eb8a6228ab253bfa53&oe=57E23B8B

При посещении страницы 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. И это намного проще, чем я думал.

Все, что вам нужно сделать, это следующие несколько шагов:

  1. Просто запросите этот путь (на этот раз без full_picture Accessor, только object_id здесь важно):

/38246844868_10154299256109869?fields=object_id

  1. Хватай object_id из ответа API:
{
  "object_id": "1068539139897737",
  "id": "38246844868_10154299256109869"
}

В этом примере это "1068539139897737",

  1. Теперь просим всех images для выше object_id:

/1068539139897737?fields=images

  1. Ответом является 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"
}
  1. От images список, отсортированный по размеру, просто возьмите самую первую запись. Получить его source - et voilà - это полная картина.
Другие вопросы по тегам