使用Facebook Open Graph API创建对象

时间:2012-01-16 08:20:30

标签: javascript facebook facebook-graph-api

我正在使用Google App Engine来托管我的Facebook应用程序,因为它在配额方面是最慷慨的。我想使用Open Graph API发布动作(煮比萨饼,煮鸡肉,做馅饼等)。

由于Python Facebook SDK现已弃用,我想知道是否有人能够解释我的应用程序在其能够访问的功能方面的局限性。好像我可以使用JavaScript SDK来验证用户,发布操作等等。

以下是我的app界面的html客户端的元标记:

<meta property="fb:app_id"      content="250027595026486" /> 
<meta property="og:type"        content="socialdocking:chemical" /> 
<meta property="og:url"         content="http://beta2.socialdocking.appspot.com/" /> 
<meta property="og:title"       content="Sample Chemical" /> 
<meta property="og:description" content="Some Arbitrary String" /> 
<meta property="og:image"       content="https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png" />

如果没有从服务器手动写入'Sample Chemical'''Chemical',我怎么能有不同的值?是否可以使用AJAX检索值并在发布操作之前更改值“Sample Chemical”?换句话说,我是否必须遵守单个网页表示Open Graph“Object”的设计,还是可以使用单个网页同时表示多个对象?

谢谢!

2 个答案:

答案 0 :(得分:4)

在Facebook抓取之前,您无法使用Javascript动态设置元标记。您必须从服务器端执行此操作。但是,您要在此处完成的操作不需要您使用Facebook SDK。这是一个关于如何操作的PHP示例:Generating Facebook Open Graph meta tags dynamically我确信您可以将该代码传输到Python中。

答案 1 :(得分:0)

当Facebook抓取工具点击表示并识别您的Open Graph对象(例如,化学品)的URI时,它将解析OG标记并将该数据与URI一起存储为标识符。

因此,您将拥有URI http://example.com/chemicals/1呈现

...
<meta property="og:title"       content="Potassium Nitrate" />
<meta property="og:description" content="totse.com was really cool" />
...

http://example.com/chemicals/2呈现

...
<meta property="og:title"       content="Whateverium Sulfate" />
<meta property="og:description" content="This makes things go boom." />
...

为了更清楚,这里发生了什么。这是一个动态页面,它响应URI末尾的数字作为查询化学数据库的参数:( ERB示例)。

...
<meta property="og:title"       content="<%= @chemical.name %>" />
<meta property="og:description" content="<%= @chemical.description %>" />
...