Facebook的开放graphics错误 – 推断的属性

我试图在我的产品页面上实现Facebook的OpenGRaph协议。

在每一页上,我都有这个头部分上面:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml"> 

然后在头部我有:

 <meta property="og:title" content="This Page Title"/> <meta property="og:type" content="product"/> <meta property="og:url" content="http://www.mywebaddress.com"/> <meta property="og:image" content="http://www.myimage.jpg"/> <meta property="og:site_name" content="My Site Name"/> <meta property="fb:admins" content="10101010101"/> <meta property="og:email" content="hello@mywebaddress.com"/> <meta property="og:description" content="Description of my product."/> 

然后我有一个这样的代码“喜欢”button:

  <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div class="fb-like" data-href="http://thispagesurl" data-send="true" data-width="350" data-show-faces="false"></div> 

在我看来,一切似乎都复制了在Facebook开发者页面上可以find的东西,但是当我喜欢时,Facebook看起来只是在页面标题和一般信息上进行阅读。

我试图用他们的对象debugging器“debugging”页面,我得到这些警告:

 Inferred Property The og:url property should be explicitly provided, even if a value can be inferred from other tags. Inferred Property The og:title property should be explicitly provided, even if a value can be inferred from other tags. Inferred Property The og:image property should be explicitly provided, even if a value can be inferred from other tags. Inferred Property The og:locale property should be explicitly provided, even if a value can be inferred from other tags. 

据我所知,我已经按照Facebook的指示信,但我没有喜悦。 任何人都可以指出,如果我做错了什么?

在此先感谢,丹

这些标签是在'http://www.mywebaddress.com'?;

请记住,linter会遵循og:url标记,因为此标记应该指向内容片段的规范url – 因此,如果您有一个页面,例如带有og:url标签的“http://mywebaddress.com/article1”; og:url标签指向'http://mywebaddress.com',Facebook将去那里读标签那里也。;

如果不这样做,我看到看似正确的标签不被检测到的最常见的原因是用户代理检测返回不同的内容到Facebook的爬虫比你手动检查时看到的内容

最后一组引号之后需要一个空格

 <meta property="og:url" content="http://www.mywebaddress.com"/> 

应该是..喜欢这个

 <meta property="og:url" content="http://www.mywebaddress.com" /> 

对于大量的Facebook工具和文档有一些困惑。 所以很多人可能使用共享debugging器工具来检查他们的OpenGraph标记: https : //developers.facebook.com/tools/debug/sharing/

但它只能从Facebookcaching中检索有关您的网站的信息。 这意味着在您更改站点上的ogp标记后, 共享debugging器仍将使用旧的caching数据。 而且,如果Facebook服务器上没有caching数据,那么共享debugging器会显示错误: This URL hasn't been shared on Facebook before.

因此,解决scheme是使用另一个工具 – 打开graphics对象debugging器 : https : //developers.facebook.com/tools/debug/og/object/

它允许您获取新的刮擦信息并刷新Facebookcaching:

打开图形对象调试器

老实说,我不知道如何find这个工具,探索developers.facebook.com工具和支持部分 – 我找不到任何链接和提及。 我的书签中只有这个工具。 这就是Facebook 🙂


使用'财产' – attrs

我还注意到有些开发人员使用name属性而不是property 。 许多parsing器可能会正确地处理这些标签,但根据Open Graph协议 ,我们应该使用property而不是name

 <meta property="og:url" content="http://www.mywebaddress.com"/> 

使用完整的url

最后的build议是指定完整的url。 例如,当你在og:image使用相对URL时,Facebook会抱怨。 所以使用完整的一个:

 <meta property="og:image" content="http://www.mywebaddress.com/myimage.jpg"/> 

如果它帮助任何人我有同样的错误。 事实certificate,我的网页在一段时间内还没有被Facebook取消,这是一个旧的错误。 在页面上再次刮了一个button来修复它。