【问题标题】:Multiple Facebook opengraph objects on the same page同一页面上有多个 Facebook opengraph 对象
【发布时间】:2013-01-12 10:19:28
【问题描述】:

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

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

【问题讨论】:

    标签: facebook facebook-opengraph


    【解决方案1】:

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

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

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

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

    在您的对象页面上,在您的服务器上,查看传入的请求用户代理。如果 useragent 包含字符串 'facebookexternalhit' 然后呈现 HTML 和 OG 标记 - 这就是 Facebook 抓取工具看到您的页面的方式。如果用户代理不包含此字符串,请执行 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...
    

    【讨论】:

      【解决方案2】:

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

      我使用的是 Iframe,而不是在按钮标签中使用 href。

      1. 为每个 OG 对象制作一系列 html 页面。
      2. 在每个页面中添加必要的 facebook 标头脚本和 facebook 根元素以调用 facebook api。
      3. 创建将调用每个 OG 对象的操作的表单输入元素。为这些元素中的每一个指定一个 ID。
      4. 包含一个小脚本,用于确定您是 Iframe 还是页面,这样您就可以在用户点击 Facebook 提要时将他们重定向回您的主页。
      5. 最后,在页面上放置一个大小设置为无框架的 iframe,并将其设置为无滚动。使用表单元素的 ID 来确定应该在 iframe 视图中执行的操作。

      我仍在努力为我的手机输出优化此功能,但它在大多数浏览器中都可以正常工作。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-08-03
          • 2020-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-23
          • 1970-01-01
          • 2021-09-04
          • 1970-01-01
          相关资源
          最近更新 更多