用于社交分享的OpenGraph元数据不在Facebook上显示图像等

时间:2018-06-08 15:05:15

标签: facebook .htaccess facebook-opengraph opengraph meta

或许类似于this question,但因为我的问题的间歇性而发布一个新的。我曾尝试过该帖子中的许多建议。

在研究这篇文章时,我早在2012年就已经看到了人们反对它的帖子,虽然有些东西对某些人有用,但我找不到任何明确的解决方案。我似乎无法解决我的问题所以如果我们确实解决了这个问题,我会尽可能地详细说明这个问题,希望这可以作为某种资源。

在使用OG数据的服务上共享URL时,图像不会被提取,但这有时只会发生。最值得注意的是,这种情况发生在Facebook上,但当它发生在特定图像上时,其他OG服务(如WhatsApp)也会遇到同样的问题,这让我相信问题出在图像本身或OG元数据而不是Facebook&#39执行它。它不是等待刮刀做其事情的情况,这已经持续了好几个星期而且经常重新开始。

当发生这种情况时,我从Facebook调试器中获得以下信息:

  • 有关Twitter属性和"解析器不匹配的元数据的警告" 与Twitter属性相关
  • 使用尾部斜杠重定向到同一网址的通知
  • 找到原始标签的详细信息
  • 基于原始标记构建的数据
  • 用户在共享网址时将看到的内容的示例

使用原始标签,构建的数据和示例,没有什么异常,报告中没有发现其他错误。基本上,调试器说一切都是A-OK,并且还显示了我希望它显示的图像。但是,当实际共享URL时,获取的信息不包括图像。

我的研究表明,Facebook对于做一些事情所需的信息非常挑剔,我应该提供尽可能多的属性。所以,目前我的meta看起来像这样(取决于页面):

<title>Examplefest 2018 - Lineup</title>
<meta name="description" content="An outstanding lineup" />
<meta property="og:title" content="Examplefest 2018 - Lineup" />
<meta property="og:description" content="An outstanding lineup" />
<meta property="og:url" content="https://example.com/lineup/" />
<meta property="og:type" content="article" />
<meta property="fb:app_id" content="15***********94" />
<meta property="og:image" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="og:image:url" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="420" />
<meta property="og:image:alt" content="Examplefest 2018 - Lineup" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="Examplefest 2018 - Lineup" />
<meta property="twitter:site" content="@examplefest" />
<meta property="twitter:creator" content="@examplefest" />
<meta property="twitter:description" content="An outstanding lineup" />
<meta property="twitter:image" content="http://example.com/_images/social-shares/lineup-social-share.jpg" />
<meta property="twitter:image:alt" content="Examplefest 2018 - Lineup" />

到目前为止,基于我的研究,我已尝试过(以各种组合方式):

  • og:url - 包含和不包含斜杠
  • og:image:url - 使用和不使用此
  • og:image:secure_url - 当图像显示时,是否使用此功能 通过HTTPS提供
  • <html prefix="og: http://ogp.me/ns#"> - 使用和不使用此
  • 强制通过HTTP传递图像文件夹的内容 而不是HTTPS
  • 使用.jpg而不是.png(这似乎有一次工作)
  • 缩小图片的原始尺寸和文件大小,现在为800x420和342.7kb(这似乎也适用于一次)
  • 使用SSL Shopper's SSL Checker
  • 验证了我的SSL证书没有问题

要强制通过HTTP而不是HTTPS传递这些图像,我已经使用了.htaccess。我在日志中没有收到任何错误,指定文件夹中没有子文件夹,Facebook调试器确认它检索的图像是通过HTTP。我的.htaccess看起来像这样(最后有一堆永久和临时的重定向):

Options +FollowSymLinks
RewriteEngine On

#Rewrite the WWW out of urls
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,NE,R=301]

#Rewrite everything to https except the contents of specific folders
RewriteCond %{HTTPS} !on
RewriteCond %{THE_REQUEST} !\s/+_images/social-shares[/?\s] [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]

#Force contents of specific folders to be HTTP and not HTTPS
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} \s/+_images/social-shares[/?\s] [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]

#Allow cross site resources
Header add Access-Control-Allow-Origin "*"

我觉得我已经尝试了我能找到的每一个选项,但似乎没有任何效果。令人费解的是,它只是间歇性的;当图像工作时,它适用于所有OG服务,当它失败时,它对所有OG服务都失败。将图像更改为其他图像有时会起作用,有时也不会。实际上,这与第一张图像显示的几率大致相同。这是否意味着图像本身的某些属性对此过程很重要?当我有一个我要分享的特定图像时,将图像更改为其他内容并不是一个真正的选项。

有没有人对下一步尝试有什么想法?或者甚至更好,你能看到我的代码有任何明显的问题吗?如果你想了解一下真实的东西,我很高兴给你一个URL。

0 个答案:

没有答案