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

And*_*all 7 facebook facebook-opengraph

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

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

Sim*_*oss 13

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...
Run Code Online (Sandbox Code Playgroud)


Dus*_*son 0

FB 使用您分配给对象的 URL 来抓取其信息。解决这个问题的唯一方法是通过 iframe 或某种类似的方法显示对象。如果直接引用该对象,您需要一种方法来重定向回组合对象视图的适当包装页面。只要一切都在同一个域中,您就可以找到一种通过父框架在子框架之间进行通信的方法。