Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook开放图错误-推断属性_Facebook_Facebook Opengraph - Fatal编程技术网

Facebook开放图错误-推断属性

Facebook开放图错误-推断属性,facebook,facebook-opengraph,Facebook,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"> 据我所知,我严格遵守了Facebook的指示,但我一点也不高兴。有人能指出我做错了什么吗 提前感谢,, Dan那些标签在'http://www.

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

在每一页的标题上方都有这样的内容:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
据我所知,我严格遵守了Facebook的指示,但我一点也不高兴。有人能指出我做错了什么吗

提前感谢,,
Dan

那些标签在'http://www.mywebaddress.com'?

请记住,linter将跟随og:url标记,因为该标记应指向内容片段的规范url——因此如果您有一个页面,例如http://mywebaddress.com/article1'带有指向的
og:url
标记'http://mywebaddress.comFacebook也会去那里阅读标签


如果不能做到这一点,我所看到的linter没有检测到看似正确的标记的最常见原因是用户代理检测将不同的内容返回到Facebook的爬虫程序,而不是手动检查时看到的内容。在最后一组引号后需要一个空格

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

应该是……喜欢这个

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

以防我犯了同样的错误,这对任何人都有帮助。事实证明,我的页面在一段时间内并没有被Facebook废弃,这是一个老错误。页面上有一个“再次刮取”按钮修复了它。

UPD2020:“打开图形对象调试器”已停止。使用共享调试器刷新Facebook缓存。


大量Facebook工具和文档存在一些混乱。很多人可能会使用共享调试器检查OpenGraph标记:

但它只从Facebook缓存中检索有关您网站的信息。这意味着在更改站点上的ogp标记后,共享调试器仍将使用旧的缓存数据。此外,如果Facebook服务器上没有缓存数据,则共享调试器将向您显示错误:
此URL以前从未在Facebook上共享过。

因此,解决方案是使用另一个工具–
打开图形对象调试器:

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

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


使用“属性”-属性 我还注意到,一些开发人员使用
name
属性而不是
属性
。许多解析器可能会正确处理此类标记,但根据,我们应该使用
属性
,而不是
名称

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

这可能会帮助一些正在努力让Facebook很好地阅读OpenGraph的人


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

在我的例子中,源代码中的一个意外错误通知阻止了facebook爬虫解析(正确设置的)og元标记

我使用的是
HTTP\u ACCEPT\u LANGUAGE
头,它对于常规的浏览器请求很有效,但对于爬虫程序则不行,因为它显然不会使用/设置它

因此,对我来说,使用facebook的调试器功能查看我们的scraper对你的URL所看到的内容是至关重要的,因为错误通知只能在那里看到(但不能通过常规的“查看源代码”浏览器功能)


天哪,有时候我会踢自己!这似乎成功了,伊吉,非常感谢:)我猜Facebook上有人动作太快,把东西弄坏了,因为我根本无法让它工作,Facebook只是选择了另一张图片。他们有一个在线调试程序,你可以在其中输入URL,即使Facebook的URL也会显示错误。只向Facebook显示OG标签太愚蠢了。为什么要排除Twitter或其他利用这些元信息的服务@丹,那你的问题是什么?我也有同样的问题,但我无法从你的回答中看出Igy的反应中哪一部分是踢球者。你救了我一天!谢谢你指出这个被忽视的错误,你能检查一下吗?仅供参考。。。自动关闭标签完全不受空格或非空格的影响。。。最佳实践是包含空间,但它对parser@JoshuaBarker事实上,在我添加空间之前,它对我不起作用。我的也在添加空间后开始工作,尽管我同意这不会有什么不同。也许是FB那边的臭虫?谢谢。这里也有同样的问题。通过像你说的那样添加一个空格来修复它。(!)真的吗!?谢谢@userNice工具。由于缓存的原因,我在使用其他FB工具时遇到了问题。使用
property
为我解决了这个问题。这有点让人困惑,因为HTML规范级别的
属性
属性。¯\_(ツ)_/¯
<meta property="og:url" content="http://www.mywebaddress.com"/>
<meta property="og:url" content="http://www.mywebaddress.com" />
<meta property="og:url" content="http://www.mywebaddress.com"/>
<meta property="og:image" content="http://www.mywebaddress.com/myimage.jpg"/>