我正在尝试将Meteor应用程序与Facebook Open Graph集成,以便在时间轴中发布操作。
Facebook API的工作原理是在HTML头中定义特定于对象的元标记,这些标记将由API读取。例如:
<head prefix="og: http://ogp.me/ns# [YOUR_APP_NAMESPACE]:
http://ogp.me/ns/apps/[YOUR_APP_NAMESPACE]#">
<title>OG Tutorial App</title>
<meta property="fb:app_id" content="[YOUR_APP_ID]" />
<meta property="og:type" content="[YOUR_APP_NAMESPACE]:recipe" />
<meta property="og:title" content="Stuffed Cookies" />
<meta property="og:image" content="http://fbwerks.com:8000/zhen/cookie.jpg" />
<meta property="og:description" content="The Turducken of Cookies" />
<meta property="og:url" content="http://fbwerks.com:8000/zhen/cookie.html">
</head>
然而,Facebook API在检查任何URL时看到的是这样的:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/ed99236548322b46a7562b49cd6ee0e0f059e506.css">
<script type="text/javascript" src="/c16ff21884b1f831d91ebf271236ef78b03b552e.js"></script>
<title>Made with Meteor!</title>
</head>
<body>
</body>
</html>
在Meteor应用程序中,根据URL可能会更改此元标记的最佳方式是什么?
答案 0 :(得分:5)
我遇到了同样的问题。
有两种方法可以解决这个问题:
(注意:您可能需要不使用 autopublish包与此解决方案,因为&#34; spiderable&#34;停止页面呈现,同时依赖于标记&#34; autopublish& #34;在客户端启动时设置为&#34; true&#34;
https://github.com/ayal/headly
安装完成后,您可以这样使用它:
Meteor.headly.config({tagsForRequest: function(req) {
... do something dynamic here, i.e get title from db based on url param ...
return '<meta property="og:title" content="<DYNAMIC TITLE>" />';
}});
答案 1 :(得分:1)
Spiderable包是要走的路......
路由器中的执行类似这样的操作......(这是coffee-sciprt)
#Spiderable stuff to set meta tags for crawl
$("meta[property='fb:app_id']").attr "content", "YOUR_APP_ID"
$("meta[property='og:type']").attr "content", "YOUR_APP:OPEN_GRAPH_CUSTOM_EVENT"
$("meta[property='og:url']").attr "content", "https://apps.facebook.com/YOURAPP"+ @canonicalPath
$("meta[property='og:title']").attr "content", "some title:
$("meta[property='og:description']").attr "content", "some description"
$("meta[property='og:image']").attr "content", "thumb image url"
您可以测试此页面的Facebook抓取是否与其调试工具一起使用...只需输入此页面的网址并检查错误等。
答案 2 :(得分:0)
您需要meteor add spiderable
。
从meteor 0.4.2开始,如果包含spiderable
软件包,您只需在客户端HTML <meta>
中包含相关的<head>
元素。
<head>
<meta property="og:type" content="website" />
<title>HTML head test</title>
</head>