多个Facebook在同一页面上打开图形对象

时间:2011-10-05 02:36:05

标签: facebook facebook-opengraph

我有一个页面,用户必须在多个对象上启动操作,但Facebook设计限制您使用所需的元属性标记每页只有一个对象。

有没有人找到解决这个问题的方法?

3 个答案:

答案 0 :(得分:12)

Open Graph使用URL作为对象标识符,因此不可能在一个页面上有多个对象,页面对象。

相反,您需要每个对象的URL,并且该URL的HTML应包含正确的OG标记。

您可以在一个页面上放置多个相似按钮,并通过为每个相似按钮指定'href'参数使它们指向每个对象。

但是,如果您希望用户在点击每个对象的链接时最终返回到SAME页面,您可以这样做,但它有点棘手...

在您的对象页面上,在您的服务器上,查看传入的请求useragent。如果useragent包含字符串'facebookexternalhit'然后呈现HTML和OG标记 - 这就是Facebook刮刀看到您的页面的方式。如果useragent不包含此字符串,请对您希望用户查看的页面执行302 redirct。

结果?许多对象,但只有一个用户可见的页面。取胜。

这就是你要做的事情:

<?php

if ($_SERVER["HTTP_USER_AGENT"] != "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") {
    redirect('http://www.somesite.com', 302);
}
function redirect($url, $type=302) {
    if ($type == 301) header("HTTP/1.1 301 Moved Permanently");
    header("Location: $url");
    die();
}

?>

<html...

答案 1 :(得分:2)

https://stackoverflow.com/a/7659770/1354666这是一个很好的答案,但有些事情对我来说效果不佳,所以我尝试了另一种选择。

我没有在按钮标签中使用href,而是使用了iframe。

  1. 为每个OG对象制作一系列html页面。
  2. 在每个页面中添加必要的facebook标题脚本和facebook根元素以调用facebook api。
  3. 创建表单输入元素,以调用每个OG对象的操作。给每个元素一个id。
  4. 包含一个小脚本,用于确定您是否以及iframe或某个页面,以便您可以在用户点击facebook Feed时将用户重定向回主页。
  5. 最后,在页面上将样式设置为无框架并将其设置为大小的iframe,并将其设置为无滚动。使用表单元素的ID来定位iframe视图中应该采取的操作。
  6. 我仍在努力为我的手机输出改进这个功能,但它对大多数浏览器都有效。

答案 2 :(得分:0)

FB使用您分配给对象的URL来获取信息。解决这个问题的唯一方法是通过iframe或类似的方法显示对象。如果直接引用了对象,则需要一种方法来重定向回组合对象视图的相应包装页面。只要所有内容都在同一个域中,您就可以找到一种通过父级在子帧之间进行通信的方法。