Facebook Share Dialog does not display thumbnails one first load

时光怂恿深爱的人放手 提交于 2019-11-28 08:17:19
Aron

I have run into this issue as well and it turns out that Facebook has an undocumented "feature", likely implemented for optimization. It does not load your image during the first share.

The bug description can be found here: https://developers.facebook.com/bugs/657696104321030

In short, the solution is one of two possibilities.

  1. The easiest is to include og:image:width and og:image:height as part of your ogtags describing the pixel width and height of the image. Strangely, this will (by design apparently) convince Facebook to scrape the site immediately, including image.

    <meta property="og:image" content="http://example.com/image.jpg"/ >

    <meta property="og:image:width" content="450"/>

    <meta property="og:image:height" content="298"/>

  2. The second potential solution is to trigger a scrape manually via API. I have not tested this, but theoretically it is possible. See the relevant Stackoverflow discussion on this topic.

Facebook displays a cached image. It does so the first time the share is submitted or when Facebook crawler finds og:image tag on your page.

According to Facebook docs at https://developers.facebook.com/docs/sharing/best-practices#pre-cache-images

"Some of our Social Plugins render an image when someone is interacting with them. The image is based on the og:image on the page, or other images on the page if the og:image isn't set. Before the social plugin can render an image Facebook's crawler has to see the image at least once. For sites where pages change frequently (e.g. ecommerce) the first person who clicks on these plugins won't see a rendered image."

I found another way to force the facebook crawler to check the page before you click the share button: just include an hidden iFrame with the sharer facebook link.

Example:

<iframe src="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.example.com" style="width: 0px; height: 0px; margin: 0px; padding: 0px;"></iframe>

I finally I think I found the issue. The images I want to share are delivered by a PHP script instead of a plain file. It seems to be related to the way PHP delivers the images:

Bad:

echo readfile($image_thumb_file);

Good:

$fp   = fopen($image_thumb_file, "rb");
fpassthru($fp);

After doing this change my images finally appear in the Facebook debugger.

Pablo Barbie Fumarola

You also can check og:image:width and og:image:height properties.
This works for me.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!