2

我已经成功地将Facebook按钮添加到我的页面,使用opengraph标记将它定义为图中的对象,因此它被作为对象而非一条链接。为非opengraph支持的og实现自定义名称空间:输入对象

我正在使用一个ogtype =产品元标记,但Facebook解析器产生一个错误(见下文),似乎对Facebook事实上不再支持“产品”类型感到高兴。

喜欢该对象时,它显示为“产品/服务”。这看起来不错,但是由于解析器错误,以及需要更多的理解,我想解决它,并采取给予的建议来实现我自己的自定义类型,我可能会在以后使用它。

我的页面是现有产品(单个对象产品,同一页面上的多个评论)的评论页面,所以我需要定义一个自定义名称空间以便能够执行此操作。然而,我不知道我做得对...

我有点困惑,因为它似乎我必须有一个应用程序才能做到这一点,并定义一个自定义对象和动作(即使我没有立即计划采取行动)。

因此,我在Facebook的“App”中设置了一个名称空间(mySiteName),并且我定义了一个对象“ski”和“review”(稍后)。

然后是我的自定义命名空间声明:

http://ogp.me/ns#mySiteName: http://ogp.me/ns/apps/mySiteName#“>

这最初通过调试试验,但后来我发现我有一个多余的标签,该标签我删除,我得到了新的错误的负载:

初始调试错误:

The parser's result for this metadata did not match the input metadata. Likely, this was caused by the data being ordered in an unexpected way, multiple values being given for a property only expecting a single value, or property values for a given property being mismatched. Here are the input property =>content pairs that were not seen in the parsed result: 'og:type => product'

代码(没有错误):

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{lang}" lang="{lang}" xmlns:fb="http://ogp.me/ns/fb#"> 
<head> 
<head prefix="og: http://ogp.me/ns#mysitename: http://ogp.me/ns/apps/mysitename#"> 
<meta property="og:type" content="mysitename:ski" /> 

新调试错误,除去多余的,其中只有mysitename命名空间似乎是用来:

Extraneous Property: Objects of this type do not allow properties named 'og:mysitename:type'. Extraneous Property: Objects of this type do not allow properties named 'og:mysitename:title'.

etc

Meta Tag: Meta Tag:

etc

感谢任何投入 - 我一直没有快乐的事情了几个小时。

回答

2

分析器工作与当前的Open Graph API,但是,“OG:类型=产品”是从早期版本,这是与Like按钮在2010年推出的标记 - 文档当前位置:https://developers.facebook.com/docs/opengraphprotocol/

它应该仍然工作,但Facebook's Debug Tool不会通过它,因为它在寻找与自定义操作相关的标签和对象用的Open Graph

当前版本对于自定义对象,标题等使用的标记应与og:title添加,而不是og:namespace:title标签,也许这是您的'滑雪'对象的问题? 在您的应用程式的Open Graph设置,对象定义有一个“获取代码”按钮旁边的它,其中包括该对象的样本标签:enter image description here - 看看如何比较自己在做什么

+0

感谢@Igy。我从各地得到了这样的印象。当文档赶上更新的API和调试器,因为 - 任何想法为什么我的自定义对象名称空间“滑雪”不起作用? – Dan

+0

以上编辑答案 – Igy

+1

再次感谢@Igy - 最初我有'og:title',但由于某种原因,我的duff命名空间声明意味着它们在调试器中被读为'og:namespace:title',即使我的命名空间只在og:类型元。我通过你的指针使用了示例代码,它可以工作。我错过了一个空间 - 不知道这是否是终端。 – Dan