阻止来自Facebook js sharer的某些图像

时间:2013-10-17 10:43:52

标签: html facebook facebook-sharer

嗯,正如标题所述,有没有办法阻止Facebook js sharer中的某些图像?

Facebook js sharer自动从页面中提取图像,并允许用户选择要在共享帖子中显示为缩略图的图像。目前,我们遇到的情况是,它在页面上获取广告图像而没有其他图像。

我可以想象横幅可以显示为div的背景图像,或者通过动态添加它们,但仍然可能有特殊标记要排除的图像或共享初始化选项...无法找到任何相关的内容FB文档,但它们非常“具体”......

要澄清以上内容,请查看标记:

<!DOCTYPE html>
<html lang="en" 
      xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:og="http://ogp.me/ns#"
      xmlns:fb="https://www.facebook.com/2008/fbml">
 <head>
  <meta property="og:image" content="/logo.jpg">
 </head>
 <body>
  <article>
   ..plain text content
  </article>
  <aside>
   <img src="/banner.jpg"> <!-- fetched image for share, wrong -->
  </aside>
 </body>
</html>

P.S。:我已经读过这个问题:how to exclude an image from facebook sharer - 但实际上动态添加横幅(选择的答案)并不是它的意思。

1 个答案:

答案 0 :(得分:2)

这是我向another answer提供的a different question的C&amp; P,虽然它也适用于此:

您的问题的解决方案可能是检查真实用户或Facebook机器人是否正在访问您的页面。如果是机器人,则只为其渲染必要的元数据。您可以通过其Facebook documentation的用户代理检测机器人:
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

代码看起来像这样(在PHP中):

function userAgentIsFacebookBot() {
    if ($_SERVER['HTTP_USER_AGENT'] == "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") {
        return true;
    }
    return false;
}