FB OpenGraph og: изображение не вытягивает изображения (возможно, https?)

Во-первых - я не полагаю, что это дублирующаяся проблема. Я искал те же или подобные проблемы на SO, и из-за характера устранения неполадок перед тем, как спросить, я считаю, что эта проблема уникальна.

Facebook не может понять мои файлы og:image, и я пробовал все обычные решения. Я начинаю думать, что это может иметь какое-то отношение к https://...

  • Я проверил http://developers.facebook.com/tools/debug и имеет нулевые предупреждения или ошибки.
  • Мы находим изображения, с которыми мы связались в "og:image", но они отображаются пустым. Однако, когда мы щелкаем по изображению (-ам), они существуют, и они берутся прямо на них.
  • Он показывает одно изображение - изображение, размещенное на сервере, отличном от https.
  • Мы пробовали квадратные изображения, jpegs, pngs, большие размеры и меньшие размеры. Мы разместили изображения в public_html. Появляется нуль.
  • Это не ошибка кэширования, потому что, когда мы добавляем еще один og:image в мета, FB linter находит и читает это. Он показывает предварительный просмотр. Предварительный просмотр пуст. Исключение только, которое мы получаем, предназначено для изображений, которые не находятся на этом веб-сайте.
  • Мы подумали, что, возможно, в cpanel или .htaccess было предотвращено выщелачивание, что препятствовало отображению изображений, поэтому мы проверили. Не было. Мы даже сделали быстрый < img src="[remote file]" > на совершенно другом сервере, и изображение получилось отлично.
  • Мы думали, что это была og:type или другая странность с другим метатегом. Мы удалили все из них по одному и проверили. Без изменений. Просто предупреждения.
  • Тот же код на другом веб-сайте появляется без каких-либо проблем.
  • Мы думали, что это не тянет изображения, потому что мы используем одну и ту же страницу продукта для нескольких продуктов (меняя ее на основе значения get, т.е. "details.php? id = xxx" ), но она все еще вытягивая одно изображение (с другого URL-адреса).
  • Если вы оставите og:image или image_src off, FB не находит никаких изображений.

Я нахожусь в конце моей веревки. Если бы я сказал, сколько времени я и другие потратили на это, вы были бы в шоке. Проблема в том, что это интернет-магазин. Мы абсолютно, позитивно не можем НЕ иметь изображения. Мы должны. У нас есть десять или около того других сайтов... Это единственная проблема с og:image. Это также единственное на https, поэтому мы подумали, что это была проблема. Но мы не можем найти ни одного прецедента в Интернете для этого.

Это мета-теги:

<meta property="og:title" content="[The product name]" /> 
<meta property="og:description" content="[the product description]" /> 
<meta property="og:image" content="https://www.[ourwebsite].com/images/shirts/overdriven-blues-music-tshirt-details-black.png" />
<meta property="og:image" content="https://www.[ourwebsite].com/images/shirts/overdriven-blues-music-tshirt-art-black.png" />
<meta property="og:image" content="http://www.[ADIFFERENTwebsite].com/wp-content/uploads/2011/06/ARS-Header-Shine2.png" />
<meta property="og:image" content="https://www.[ourwebsite].com/images/ARShopHeader.png" />
<meta property="og:image" content="http://www.[ourwebsite].com/overdriven-blues-music-tshirt-art-black.JPG" />
<meta property="og:type" content="product"/>
<meta property="og:url" content="https://www.[ourwebsite].com/apparel-details.php?i=10047" />
<meta property="og:site_name" content="[our site name]" />      
<meta property="fb:admins" content="[FB-USER-ID-NUMBER]"/>
<meta name="title" content="[The product name]" />
<meta name="description" content="[The product description]" />
<link rel="image_src" href="#" onclick="location.href='https://www.[ourwebsite].com/images/shirts/overdriven-blues-music-tshirt-details-black.png'; return false;" />
<meta name="keywords" content="[four typical keywords]">
<meta name="robots" content="noarchive">

В случае, если вы этого хотите, вот ссылка на одну из наших страниц продуктов, над которыми мы работали. [Ссылка сокращена, чтобы попытаться обуздать это попадание в результаты поиска для нашего сайта]: http://rockn.ro/114

РЕДАКТИРОВАТЬ ----

Используя "видеть, что видит facebook", инструмент скребка, мы смогли увидеть следующее:

"image": [          
      {
         "url": "https://www.[httpSwebsite].com/images/shirts/soul-man-soul-music-tshirt-details-safari.png"
      },
      {
         "url": "https://www.[httpSwebsite].com/images/shirts/soul-man-soul-music-tshirt-art-safari.png"
      },
      {
         "url": "http://www.[theotherNONSECUREwebsite].com/wp-content/uploads/2011/06/ARS-Header-Shine2.png"
      }
   ],

Мы проверили все найденные ссылки для одной страницы. Все они были абсолютно правильными изображениями.

ИЗМЕНИТЬ 2 ----

Мы попробовали тест и добавили субдомен на веб-сайт NONSECURE (из которого изображения фактически видны через facebook). Субдомен был http://img. [Nonsecuresite].com. Затем мы помещаем все изображения в основную папку поддоменов и ссылаемся на них. Он не потянул бы эти изображения в FB. Тем не менее, он по-прежнему будет тянуть любые изображения, на которые ссылались в небезопасном основном домене.

ОТКРЫТОЕ ПОЛОЖЕНИЕ ----

Благодаря Кигану мы теперь знаем, что это ошибка в Facebook. К обходному пути мы разместили субдомен на другом веб-сайте NON-HTTPS и сбросили все изображения в нем. Мы указали координационное изображение http://img.otherdomain.com/[like-image.jpg] в og:image на каждой странице продукта. Затем нам пришлось пройти через FB Linter и запустить ссылку EVERY для обновления данных OG. Это сработало, но решение является обходной способ обхода, и если проблема с https исправлена, и мы вернемся к использованию естественного домена https, FB будет кэшировать изображения с другого веб-сайта, что усложняет вопросы. Надеемся, эта информация поможет спасти кого-то другого от потери 32 часов кодирования их жизни.

Ответ 1

Я столкнулся с той же проблемой и сообщил об этом как об ошибке на сайте разработчиков Facebook. Кажется довольно очевидным, что OG: URI изображений, использующие HTTP, работают нормально, а URI с использованием HTTPS этого не делают. Они теперь признали, что они "изучают это".

Здесь можно найти ошибку: https://developers.facebook.com/bugs/260628274003812

Ответ 2

В некоторых свойствах могут быть добавлены дополнительные метаданные. Они указаны так же, как и другие метаданные с property и content, но property будет иметь дополнительные значения:

Свойство og:image имеет некоторые необязательные структурированные свойства:

  • og:image:url - Идентично для og: image.
  • og:image:secure_url - альтернативный URL-адрес для использования, если веб-страница требует HTTPS.
  • og:image:type - A MIME для этого изображения.
  • og:image:width - количество пикселей в ширину.
  • og:image:height - Высокое количество пикселей.

Пример полного изображения:

<meta property="og:image" content="http://example.com/ogp.jpg" />
<meta property="og:image:secure_url" content="https://secure.example.com/ogp.jpg" /> 
<meta property="og:image:type" content="image/jpeg" /> 
<meta property="og:image:width" content="400" /> 
<meta property="og:image:height" content="300" />

Итак, вам нужно изменить свойство og:image для URL-адресов HTTPS на og:image:secure_url

Пример:

HTTPS META TAG ДЛЯ ИЗОБРАЖЕНИЯ:

<meta property="og:image:secure_url" content="https://www.[YOUR SITE].com/images/shirts/overdriven-blues-music-tshirt-details-black.png" />

HTTP META TAG FOR IMAGE:

<meta property="og:image" content="http://www.[YOUR SITE].com/images/shirts/overdriven-blues-music-tshirt-details-black.png" />

Источник: http://ogp.me/#structured < - Вы можете посетить этот сайт для получения дополнительной информации.

Надеюсь, это поможет вам.

РЕДАКТИРОВАТЬ: Не забывайте пинговать серверы facebook после обновления ваших кодов - URL Linter

Ответ 3

Я не знаю, если это только со мной, но для меня og:image не работает, и он выбирает мой логотип сайта, хотя facebook debugger показывает правильное изображение.

Но изменение менялось og:image до og:image:url. Надеюсь, это поможет кому-то еще столкнуться с подобной проблемой.

Ответ 4

Получил от Google, но это не помогло мне. Оказалось, что для логотипа минимальное соотношение сторон 3: 1. Мой был почти 4: 1. Я использовал Gimp, чтобы обрезать его ровно 3: 1 и voila - мой логотип теперь отображается на FB.

Ответ 5

tl; dr - наберись терпения

Я попал сюда, потому что я видел пустые изображения с сайта https. Проблема была совсем другой, хотя:

Когда контент публикуется впервые, сканер Facebook будет очищать и кэшировать метаданные из общего URL-адреса. Сканер должен увидеть изображение хотя бы один раз, прежде чем оно будет отображено. Это означает, что первый человек, который поделится частью контента, не увидит визуализированное изображение.

[ https://developers.facebook.com/docs/sharing/best-practices/#precaching]

Во время тестирования Facebook понадобилось около 10 минут, чтобы наконец показать обработанное изображение. Поэтому, пока я чесал голову и бросал случайные теги og в Facebook (и подозревал проблему https, упомянутую здесь), все, что мне нужно было сделать, это ждать.

Поскольку это может действительно помешать людям делиться вашими ссылками в первый раз, FB предлагает два способа обойти это поведение: a) запускать отладчик OG для всех ваших ссылок: изображение будет кэшировано и готово для обмена через ~ 10 минут или b ) указав og: image: ширину и og: image: высоту. (Подробнее в ссылке выше)

Все еще задаюсь вопросом, хотя, что занимает их так долго...

Ответ 6

У меня была та же ошибка, и ничто из предыдущего не помогло, поэтому я попытался следовать оригинальной документации Open Graph Protocol и добавил атрибут префикса к своему HTML-тегу, и все стало замечательно.

<html prefix="og: http://ogp.me/ns#">

Ответ 7

У меня были подобные проблемы. Я удалил свойство = "og: image: secure_url", и теперь он будет счищен только с изображением og:. Иногда, меньше

Ответ 8

Как я случайно обнаружил, прозрачное пустое изображение содержит заголовок ответа, указывающий на возможную причину проблемы.

  • Перейдите в отладчик в https://developers.facebook.com/tools/debug/og/object/
  • Поместите свой URL
  • Внизу, facebook показывает ваше "изображение" (прозрачный 1x1 GIF)
    • Изображение связано с вашим исходным изображением - без нажатия на него
    • Нажмите правую и просмотрите изображение (вы получите что-то вроде https://external-ams3-1.xx.fbcdn.net/safe_image.php?d=...&url=...)
  • Включите вкладку Net в инструментах firebug/разработчика, обновите страницу при необходимости
  • Вы получите заголовок ответа x-error-detail с объяснением

Например, в моем случае это было Invalid image extension for URL: https://[mydomain]/[myfilename].jpg

Реальная проблема в моем случае была связана с prerender.io.

Как выясняется, если изображение запрашивается через prerender, оно преобразуется в HTML. Что-то вроде этого:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>
<body style="margin: 0px;"><img style="-webkit-user-select: none; cursor: -webkit-zoom-in; " src="https://[yourdomain].com/[yourfilename].jpg" width="1078" height="718"></body>
</html>

Это либо ошибка самого prerender, либо она должна быть настроена в вашем прокси, чтобы не использовать prerender для запросов *.jpg (даже если они запрошены ботём Facebook).

Это очень сложно заметить, поскольку prerender используется только для определенных заголовков пользовательских агентов.

Ответ 9

Я обнаружил другой сценарий, который может вызвать эту проблему. Я прошел все шаги, описанные в вопросе и ответах, но проблема осталась.

Я проверил свои изображения и обнаружил, что некоторые мои сообщения имели слишком большие уменьшенные изображения в og:image в диапазоне от нескольких тысяч пикселей и несколько мегабайт.

Это произошло из-за недавней миграции из WP в Jekyll, я оптимизировал свои изображения с помощью gulp, но по ошибке использовал исходные изображения в og: image.

Facebook дает нам следующие рекомендации на сегодняшний день:

Используйте изображения размером не менее 1200 x 630 пикселей для лучшего отображения на устройства с высоким разрешением. Как минимум, вы должны использовать изображения, которые 600 x 315 пикселей, чтобы отображать сообщения с более крупными изображениями. Изображения могут быть размером до 8 МБ.

Таким образом, верхний предел составляет 8 МБ.

Ответ 10

Я столкнулся с той же проблемой, и тогда я заметил, что у меня был другой домен для og:url

Как только я убедился, что домен был одинаков для og:url и og:image, он работал.

Надеюсь, что это поможет.

Ответ 11

Не забудьте обновить серверы через:

Отладчик Facebook

И нажмите "Собрать новую информацию"

Ответ 12

В моем случае проблема заключалась в том, что мы не предоставляли CA Root Certificate. Я понял это после использования: https://www.ssllabs.com/ssltest/analyze.html для анализа конфигурации SSL.

Ответ 13

Подобные симптомы (Facebook и др. Неправильно выбирают og: image и другие ресурсы через https) могут возникать, когда сертификат https сайта не полностью соответствует требованиям.

Сертификат https вашего сайта может показаться действительным (зеленый ключ в браузере и все), но он не будет корректно очищаться, если в нем отсутствует промежуточный или цепной сертификат. Это может привести к потере многих часов проверки и перепроверки всех различных кешей и мета-тегов.

Возможно, это не ваша проблема, но могут быть и другие с похожими симптомами (как у меня). Есть много способов проверить ваш сертификат - тот, который мне довелось использовать: https://www.sslshopper.com/ssl-checker.html

Ответ 14

Кроме того, эта проблема возникает также при добавлении созданной пользователем истории (где вы не используете og: image). Например:

POST /me/cookbook:eat?
  recipe=http://www.example.com/recipes/pizza/&
  image[0][url]=http://www.example.com/recipes/pizza/pizza.jpg&
  image[0][user_generated]=true&
  access_token=VALID_ACCESS_TOKEN

Выше будет работать только с http, а не с https. Если вы используете https, вы получите сообщение об ошибке: Прикрепленное изображение() не удалось загрузить

Ответ 15

Сегодня у меня была похожая проблема, которую мне помог решить Sharing Debugger. Кажется, что Facebook не может (в настоящее время) понимать изображения со встроенными метаданными XMP. Когда я заменил изображения в наших статьях на версии без метаданных XMP и заново очистил страницу (используя Sharing Debugger), проблема исчезла. Шестнадцатеричный редактор поможет вам увидеть, содержит ли ваше изображение метаданные XMP.

Ответ 16

Я взял http:// из моего og:image и заменил его просто старым www. потом все заработало нормально.

Вы можете использовать этот инструмент на Facebook, чтобы сбросить кэш очистки изображения и проверить, какой URL он использует для демонстрационного изображения.

Ответ 17

В моем случае кажется, что у сканера просто ошибка. Я пробовал:

  • Изменение ссылок только на http
  • Удаление конца пробела
  • Полное переключение обратно на http
  • Переустановка сайта
  • Установка нескольких плагинов OG (я использую WordPress)
  • Подозрение на сервере имеет странную неверную конфигурацию, которая блокирует ботов (потому что все контроллеры OG не могут получить теги, а другие запросы к моим сайтам нестабильны)

Ни одна из этих работ. Это стоило мне недели. И вдруг из ниоткуда кажется, что снова работает.

Вот мое исследование, если кто-то снова столкнется с этой проблемой:

Кроме того, есть и другие проверки, кроме Отладчика объектов Facebook, которые вы можете проверить: OpenGraphCheck.com, Тестер открытых графов Abhinay Rathore, Iframely Embed Коды, Card Validator | Разработчики Twitter.

Ответ 18

Я вижу, что Отладчик извлекает 4 og:image теги из вашего URL.

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

Ответ 19

Из того, что я наблюдал, я вижу, что, когда ваш сайт является общедоступным, и хотя URL-адрес изображения - https, он просто отлично работает.

Ответ 20

Для меня это сработало:

<meta property="og:url" content="http://yoursiteurl" />
    <meta property="og:image" content="link_to_first_image_if_you_want" />
    <meta property="og:image" content="link_to_second_image_if_you_want" />
    <meta property="og:image:type" content="image/jpeg" /> 
    <meta property="og:image:width" content="400" /> 
    <meta property="og:image:height" content="300" />
    <meta property="og:title" content="your title" />
    <meta property="og:description"  content="your text about homepage"/> 

Ответ 21

После того, как вы обновите метатег, убедитесь, что ссылка на контент (изображение) является абсолютным путем, и перейдите по ссылке https://developers.facebook.com/tools/debug/sharing введите ссылку на свой сайт и scrape again нажмите на ссылку на следующей странице.

Ответ 22

После нескольких часов тестирования и тестирования вещей...

Я решил эту проблему как можно проще. Я замечаю, что они используют "тестовые страницы" на странице разработчиков Facebook, которая содержит только теги "og" и некоторый текст в теге body, который ссылается на эти теги og.

Итак, что я сделал?

Я создал второе представление в своем приложении, содержащее те же самые вещи, которые они используют.

И как я знаю, это Facebook, который обращается к моей странице, поэтому я могу изменить представление? У них есть уникальный User Agent: "facebookexternalhit/1.1"