Facebook Share Dialog在首次加载时不显示缩略图

Sve*_*ege 20 share facebook image thumbnails

我正在使用Facebook共享对话框来共享特定网址.共享链接包含一个图像,该图像应该是以后共享的一部分.关于这一点的奇怪之处在于它在移动浏览器上完全正常.但桌面浏览器不会在第一次尝试时加载图像.只需重新加载共享窗口即可修复丢失的图像.一旦此图像显示至少一次,它将继续在其他浏览器中工作,无需额外重新加载..

所以我的问题是:有人知道为什么这个网址的第一次调用不显示图像?

细节

用于打开共享对话框的链接

这是Facebook调试器的输出,没有错误,也显示图像.

Facebook调试器输出

更新

似乎没有任何问题使用Feed对话框.但这是另一种共享方式,我想阻止它,因为它需要一个App ID.

Aro*_*ron 24

我也遇到过这个问题,事实证明Facebook有一个无证的"功能",可能是为了优化而实现的.它不会在第一次共享期间加载您的图像.

错误描述可以在这里找到:https: //developers.facebook.com/bugs/657696104321030

简而言之,解决方案是两种可能性之一.

  1. 最简单的方法是将og:image:width和og:image:height作为描述图像像素宽度和高度的ogtags的一部分.奇怪的是,这将(显然设计)说服Facebook立即刮掉网站,包括图像.

    <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. 第二个可能的解决方案是通过API手动触发刮擦.我没有测试过这个,但理论上它是可能的.请参阅有关此主题的相关Stackoverflow讨论.

  • 这为我解决了这个问题.无法相信整个Facebook共享设置有多么脆弱.即使在2015年.叹息...... (2认同)

Sve*_*ege 0

我终于想我找到了问题。我想要共享的图像是通过 PHP 脚本而不是纯文件传递的。这似乎与 PHP 传递图像的方式有关:

坏的:

echo readfile($image_thumb_file);
Run Code Online (Sandbox Code Playgroud)

好的:

$fp   = fopen($image_thumb_file, "rb");
fpassthru($fp);
Run Code Online (Sandbox Code Playgroud)

完成此更改后,我的图像终于出现在 Facebook 调试器中。