Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一页面上有多个Facebook opengraph对象_Facebook_Facebook Opengraph - Fatal编程技术网

同一页面上有多个Facebook opengraph对象

同一页面上有多个Facebook opengraph对象,facebook,facebook-opengraph,Facebook,Facebook Opengraph,我有一个页面,用户必须在多个对象上启动操作,但Facebooks design使用所需的元属性标记将您限制为每页只有一个对象 有人找到了这个问题的解决方案吗?FB使用您分配给对象的URL来获取信息。唯一的解决方法是通过iframe或类似的方法显示对象。如果对象被直接引用,您需要一种方法重定向回组合对象视图的相应包装页。只要所有内容都在同一个域中,您就可以找到一种通过父对象在子帧之间进行通信的方法。打开的图形使用URL作为对象标识符,因此在一个页面上不可能有多个对象,页面就是对象 相反,每个对象都

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


有人找到了这个问题的解决方案吗?

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

打开的图形使用URL作为对象标识符,因此在一个页面上不可能有多个对象,页面就是对象

相反,每个对象都需要一个URL,该URL的HTML应该包含正确的OG标记

您可以在一个页面上放置多个like按钮,并通过为每个like按钮指定“href”参数使它们指向您的每个对象

但是,如果您希望用户在单击指向这些对象的链接时返回到同一页面,您可以这样做,但这有点棘手

在对象页面上,在服务器上,查看传入的请求useragent。如果useragent包含字符串“facebookexternalhit”,则呈现HTML和OG标记-这就是Facebook scraper查看页面的方式。如果useragent不包含此字符串,请对希望用户看到的页面执行302重拨

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

这就是你要做的:

<?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...

这是一个很好的答案,但有几件事对我来说不太好,所以我尝试了另一种选择

我使用的不是按钮标签中的href,而是Iframes

  • 为每个OG对象创建一系列html页面
  • 在每个页面中添加必要的facebook头脚本和facebook根元素以调用facebook api
  • 创建表单输入元素,这些元素将调用每个OG对象的操作。给这些元素中的每个元素一个id
  • 包括一个小脚本,该脚本将确定您是和Iframe还是一个页面,因此,如果用户单击facebook提要,您可以将用户重定向回您的主页
  • 最后,在页面上放置和调整iframe的大小,将样式设置为“无框架”,并将其设置为“无滚动”。使用表单元素的ID来确定应该在iframe视图中执行哪些操作
  • 我仍在努力改进我的手机输出,但它的工作,因为我它应该为大多数浏览器