Facebook Open Graph Error - 推断属性

时间:2011-10-23 21:42:10

标签: facebook opengraph

我正在尝试在我的产品页面上实施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."/>

然后我在这个代码中有一个“喜欢”按钮:

        <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 Developers page上可以找到的东西,但当我'喜欢'时,Facebook似乎只是在页面标题和一般信息上找到了。

我尝试使用对象调试器'调试'页面,我收到这些警告:

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的指示写信,但我没有快乐。任何人都可以指出我做错了吗?

提前致谢, 丹

7 个答案:

答案 0 :(得分:51)

这些标签是否在“http://www.mywebaddress.com”上?

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

如果做不到这一点,我看到没有被linter检测到看似正确的标签的最常见原因是用户代理检测向Facebook的抓取器返回的内容与手动检查时看到的内容不同

答案 1 :(得分:22)

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

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

应该......感谢这个

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

答案 2 :(得分:11)

大量的Facebook工具和文档存在一些混乱。很多人可能会使用共享调试器工具来检查他们的OpenGraph标记: https://developers.facebook.com/tools/debug/sharing/

但它只从Facebook缓存中检索有关您网站的信息。这意味着在您更改站点上的ogp-markup后,共享调试器仍将使用旧的缓存数据。此外,如果Facebook服务器上没有缓存数据,则共享调试器将显示错误:This URL hasn't been shared on Facebook before.

因此,解决方案是使用其他工具 - 打开图形对象调试器https://developers.facebook.com/tools/debug/og/object/

它允许您获取新的抓取信息并刷新Facebook缓存:

  

Open Graph Object Debugger

老实说,我不知道如何找到这个工具来探索工具&amp; developers.facebook.com 的支持部分 - 我找不到任何链接和提及。我的书签中只有这个工具。那个Facebook:)

使用&#39;属性&#39; -attrs

我还注意到一些开发人员使用name属性而不是property。许多解析器可能会正确处理这些标记,但根据The Open Graph protocol,我们应该使用property,而不是name

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

使用完整网址

最后一项建议是指定完整的网址。例如,Facebook在og:image中使用相对URL时会抱怨。所以使用完整的:

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

答案 3 :(得分:5)

如果它有助于任何人我有同样的错误。事实证明我的页面在一段时间内没有被Facebook取消,这是一个古老的错误。页面上有一个用于修复它的刮擦按钮。

答案 4 :(得分:0)

这可能有助于一些正在努力让Facebook很好地阅读Open Graph的人......

查看浏览器使用Firefox,Chrome或其他桌面浏览器生成的源代码(许多手机不会查看源代码),并确保doctype行或head标记之前没有空白行。如果有Facebook会发脾气,把它的玩具扔出婴儿车! (最好的描述!)删除空行 - 快乐的Facebook ...花了我大约1.5 - 2小时来发现这个!

答案 5 :(得分:0)

在我的情况下,源代码中出现意外错误通知,阻止了Facebook搜寻器解析(正确设置的)og-meta标签。

我正在使用HTTP_ACCEPT_LANGUAGE标头,该标头对于常规的浏览器请求正常运行,但不适用于搜寻器,因为它显然不会使用/设置它。

因此,对我而言,至关重要的是使用Facebook的调试器功能See exactly what our scraper sees for your URL,因为错误通知只能在此处看到(但不能通过常规的“查看源代码”浏览器功能)。

screenshot of the facebook debugger

答案 6 :(得分:0)

如果您指向错误的图像,或者您的图像文件路径以任何方式不正确,您将看到以下三个错误:

Bad Response Code: URL returned a bad HTTP response code.

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

Missing Properties: The following required properties are missing: og:url, og:type, og:title, og:image, og:description, fb:app_id

就我而言,唯一的错误是我走错了通往 og:image 的路径 - 一旦我纠正了所有这些问题立即消失了。