好吧,正如标题中所述,有没有办法阻止来自Facebook js共享器的某些图像?
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>
PS:我已经读过这个问题:如何从Facebook共享者中排除图像 - 但实际上动态添加横幅(选定的答案)并不是它想要的方式。
这是我对另一个问题给出的另一个答案的C&P,尽管它也适合这里:
您的问题的解决方案可能是检查真实用户或 Facebook 机器人是否正在访问您的页面。如果是机器人,则仅为其呈现必要的元数据。您可以通过其用户代理检测机器人,根据Facebook文档,该代理为:"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;
}