Facebook graph api Facebook';比如';按钮不存在';不要使用';:og';标签
我目前正在开发一个Ember.js应用程序,我在社交按钮方面遇到了巨大的麻烦。我已经在这里做了一些研究,但没有什么帮助 我的应用程序使用历史API,Facebook graph api Facebook';比如';按钮不存在';不要使用';:og';标签,facebook-graph-api,ember.js,Facebook Graph Api,Ember.js,我目前正在开发一个Ember.js应用程序,我在社交按钮方面遇到了巨大的麻烦。我已经在这里做了一些研究,但没有什么帮助 我的应用程序使用历史API,og:标记在页面转换时被正确更改,但Facebook仍然使用我的index.html页面中的初始值。调用FB.XFBML.parse()也没有帮助 此外,FB OpenGraph Debugger为任何页面显示我的index.html中的信息,因此,我甚至无法调试它的错误 那么,有没有人遇到过类似的情况,并且可能找到了合适的解决方法?您所经历的是预期
og:
标记在页面转换时被正确更改,但Facebook仍然使用我的index.html
页面中的初始值。调用FB.XFBML.parse()
也没有帮助
此外,FB OpenGraph Debugger为任何页面显示我的index.html
中的信息,因此,我甚至无法调试它的错误
那么,有没有人遇到过类似的情况,并且可能找到了合适的解决方法?您所经历的是预期行为。Facebookscraper将检查您的URL并提取存在的
og
标记(如果有)
您的应用程序可能会动态更改页面内容(就像单页应用程序一样),但Facebookscraper不会运行任何JavaScript,因此它只会看到最初加载的index.html
页面
你可以想象Facebook正在使用某种cURL
或wget
——无法(也不应该)解析/执行JavaScript或CSS的工具。scraper不在浏览器中运行-它不一定能看到与普通用户完全相同的东西
为了能够提供多个“喜欢”的插件,您的应用程序需要能够为每个“喜欢”的项目提供一个唯一的URL。这不必从前端访问,但必须通过Facebookscraper访问 我在过去的项目中所做的是为任何与Facebook相关的抓取(例如
share\u content.php
)创建一个唯一的URL,该页面将负责根据请求显示正确的og
标记
例如:
http://my-cool-site.com/share_content.php?item_id=5
share\u content
code将提取item\u id
,并用包含item 5值的og
标记填充HTML
由于您可能不希望普通用户能够访问专门为Facebook生成的页面,因此您可以尝试识别和识别Facebook的刮板,并仅向其显示内容-如果普通用户访问这些页面,您可以重定向到实际资源 有两种方法可以检测Facebook的刮刮器:
- (不推荐)