Facebook Open Graph Error - 推断属性

Dan*_*Dan 39 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">
Run Code Online (Sandbox Code Playgroud)

然后在头部区域我有:

<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."/>
Run Code Online (Sandbox Code Playgroud)

然后,我有一个带有此代码的"喜欢"按钮:

        <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>
Run Code Online (Sandbox Code Playgroud)

在我看来,一切似乎都复制了可以在Facebook开发者页面上找到的东西,但是当我喜欢'时,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.
Run Code Online (Sandbox Code Playgroud)

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

提前谢谢,丹

Igy*_*Igy 51

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

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

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


小智 24

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

<meta property="og:url" content="http://www.mywebaddress.com"/>
Run Code Online (Sandbox Code Playgroud)

应该......好像这一个

<meta property="og:url" content="http://www.mywebaddress.com" />
Run Code Online (Sandbox Code Playgroud)

  • fyi ...自动关闭标签根本不受空白空间的影响...最佳实践是包含空格,但它对解析器没有任何影响 (6认同)
  • @JoshuaBarker实际上,在我添加空间之前它对我不起作用. (4认同)
  • 在添加空间之后我也开始工作了,虽然我同意它不应该有所作为.也许是FB方面的漏洞? (4认同)

Ole*_*err 12

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

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

因此,解决方案是使用另一个工具 - Open Graph Object Debugger:https: //developers.facebook.com/tools/debug/og/object/

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

打开图形对象调试器

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


使用'property'-attrs

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

<meta property="og:url" content="http://www.mywebaddress.com"/>
Run Code Online (Sandbox Code Playgroud)

使用完整的网址

最后一条建议是指定完整的URL.例如,Facebook在您使用相对URL时会抱怨og:image.所以使用完整的:

<meta property="og:image" content="http://www.mywebaddress.com/myimage.jpg"/>
Run Code Online (Sandbox Code Playgroud)

  • 使用`property` 为我做到了。这有点令人困惑,因为在 HTML 规范级别的 `property` 属性 [似乎没有被定义](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)。¯\\_(ツ)_/¯ (2认同)

小智 5

万一它可以帮助任何我遇到同样错误的人。事实证明,我的页面有一段时间没有被Facebook废弃,这是一个旧错误。修复该问题的页面上再次有一个刮擦按钮。