【问题标题】:Facebook share with one-page applicationFacebook 与一页应用程序共享
【发布时间】:2013-11-15 09:23:45
【问题描述】:

这个问题可能与确切的软件堆栈、框架或语言无关。

对于我目前的项目,我们正在使用AngularJS构建具有恒定入口页面以加载真实数据和渲染的前端,这对于CDN来说很容易,并且有利于从浏览器端快速加载。但是对于某些社交功能,这样的架构师可能会导致一些问题。例如,当您将感兴趣的链接粘贴到 Facebook 门户进行分享时,Facebook 将抓取您的页面并显示预览。如果着陆页为空,则无法进行此类预览。

(听说Google+最近支持在服务器端渲染javascript逻辑,然后发回预览,但显然这不是对其他类似服务的常见支持。Google.com也支持索引基于js的单页应用程序。)

有没有更好的解决方案来优雅地解决这个问题,而不是回退到包含真实数据的动态页面?我在理解这个问题时是否遗漏了什么?

========

...我什至在想,对于标识为 FB 请求(如用户代理)的请求,将其重定向到一个特殊的网关,该网关像 PhantomJS 一样包装某物,获取页面,在服务器端呈现它,然后发送将 DOM 树快照作为内容返回给 FB 以生成预览。但我也怀疑这是一个好的方向。 : (

【问题讨论】:

  • 如果您使用节点,我创建了一个模块,可以帮助您在服务器中呈现正确的页面供 fb 或 google 阅读。 npmjs.org/package/googlebot
  • 嗨@dvidsilva,这很酷。我去看看,谢谢。
  • 嗨@dvidsilva,如果google bot 可以作为实际Web 应用程序的反向代理,那就太好了。如果前端网络服务器识别出机器人请求(如通过用户代理检查),则将请求路由到 googlebot,然后 googlebot 从真实应用服务器获取实际页面。不确定是否支持:)
  • 会,但不会更难实现,这是一些人建议的不同方法,但因为我没有任何模板,或者我没有做任何这些服务器中的进程使用幻像更容易渲染。任何情况都是不同的。

标签: javascript facebook angularjs facebook-graph-api


【解决方案1】:

我们处于同样的境地。简单的解决方案是在您的服务器将提供给 Facebook 抓取工具的页面中使用 Open Graph 元标记。 基本上,您需要在服务器端执行您的 Web 应用程序在客户端执行的操作。工作量很大程度上取决于您的托管技术(MVC 使其变得非常简单)、您的 URI 格式和您使用的 API。

你会在这里找到一些解释: https://developers.facebook.com/docs/plugins/share-button/

开图介绍: http://ogp.me/

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多