Facebook'喜欢'按钮没有使用':og'标签

时间:2014-07-07 13:40:47

标签: facebook-graph-api ember.js

我正在开发一个Ember.js应用程序,我在使用社交按钮方面遇到了很多麻烦。我已经在这里做了一些研究,但它没有什么帮助。

我的应用程序使用历史记录API,og:标记在页面转换时正确更改,但Facebook仍使用我的index.html页面中的初始值。拨打FB.XFBML.parse()也无济于事。

另外,FB OpenGraph Debugger会显示我index.html的任何页面的信息,因此我甚至无法调试它的错误。

那么,有没有人遇到这样的事情,并且可能找到了合适的解决方法?

1 个答案:

答案 0 :(得分:1)

您遇到的是预期的行为。 Facebook剪贴簿将检查您的网址并提取存在的og标记(如果有)。

您的应用程序可能会动态更改页面内容(与单页应用程序一样),但Facebook剪贴板不会运行任何JavaScript,因此它只会看到最初加载的index.html页面。 / p>

你可以想象Facebook正在使用某种cURLwget - 不能(也不应该)解析/执行JavaScript或CSS的工具。剪贴板不会在浏览器中运行 - 它不一定会看到普通用户完全相同的东西。


为了能够提供多个“喜欢”插件,您的应用程序需要能够为每个“可爱”项目提供唯一的URL。这不必从您的前端访问,但它必须由Facebook刮板访问。

我在过去的项目中所做的是为任何与Facebook相关的报废创建一个唯一的网址(例如share_content.php),此页面将负责按要求显示正确的og标记。< / p>

例如:

 http://my-cool-site.com/share_content.php?item_id=5

share_content代码将提取item_id并使用包含第5项值的og标记填充HTML。


由于您可能不希望普通用户能够访问专门为Facebook生成的页面,因此您可以尝试识别并识别Facebook的剪贴板并仅向其显示内容 - 如果普通用户访问这些页面,您可以执行重定向到实际资源。

有几种方法可以检测Facebook的剪贴板: