Facebook无法在AngularJS开发的页面上阅读动态og标签

时间:2014-07-19 14:36:45

标签: javascript facebook angularjs prerender

我正在开发一个MEAN堆栈应用程序(Mongo,Express,Angular,Node),我想在Facebook的乐趣页面上分享一些页面并拥有像这样的个性化链接。 https://www.evernote.com/shard/s414/sh/6c61c036-abc6-4eb9-b355-41af05760979/45fce4c1795580266f1247dba3452d62/res/31e7a3bd-7258-4910-bb05-5e2e61cd2d96/skitch.png

我正在使用动态og标记在共享链接上显示不同的数据

<html itemscope itemtype="http://schema.org/Article">
<!-- Open Graph --> 
<meta property="og:title" content="{{og_title}}" /> 
<meta property="og:type" content="article" /> 
<meta property="og:url" content="{{og_url}}" />
<meta property="og:image" content="{{og_image}}" />
<meta property="og:description" content="{{og_description}}" /> 
<meta property="og:site_name" content="MYSITENAME" /> 
<meta property="fb:admins" content="MYAPPID" />

这些变量由$ http.get()

从服务器检索

我正在使用在我的EC2实例(在端口3000上)上运行的prerender.io服务器,以便能够完美地抓取我的javascript页面。

app.use(require('prerender-node').set('prerenderServiceUrl', 'http://'+ config.DNS +':3000/'));

Prerender工作正常,因为当我输入

http://DOMAINE.com:3000/http://DOMAINE.com/items/5376899f3230687806000016

我得到了该页面的快照,当我显示该页面的代码源时,我得到了正确的数据。

<!-- Open Graph data --> 
<meta property="og:title" content="Pink floyd CD"> 
<meta property="og:type" content="article"> 
<meta property="og:url" content="DOMAINE.com:80/items/53763aad67afe39d05000017">
<meta property="og:image" content="https://fpid.s3.amazonaws.com/items/4748_DarkSideOfTheMoon.jpg">
....

我的问题是我在Facebook上分享这个网址

http://DOMAINE.com/items/5376899f3230687806000016

而不是获得与图像,标题和描述的良好链接,我得到这个糟糕的链接

https://www.evernote.com/shard/s414/sh/ac398446-276e-46ae-bc1e-eab5fea5cc31/ac5339dc23b07ccaa853a0b9e86d4c4c/res/c99109cc-d038-4837-a303-dbb5f7ad376c/skitch.png

2 个答案:

答案 0 :(得分:4)

您将不得不创建一个页面,该页面通过具有相应信息的节点从服务器呈现。您可以通过检查facebook用户代理并在节点中提供不同的页面/路由(而不是角度应用程序)来执行此操作。该页面只需要显示og标签。

How to recognize Facebook User-Agent

答案 1 :(得分:0)