我们的应用程序呈现指向实际 Facebook 页面的 Like 按钮。但是,我们不是将 Like 按钮的 href 直接指向 FB url,而是通过我们的服务器通过 opengraph 端点对其进行代理。这很有帮助,因为它允许我们更详细地分析何时使用这些端点(除其他外)。当这些端点被像“facebookexternalhit”这样的用户代理命中时,它们会呈现如下内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta property="fb:app_id" content="158708354177049" />
<meta property="og:site_name" content="BandPage" />
<meta property="og:url" content="http://www.facebook.com/stormystrongmusic" />
<meta property="og:type" content="band" />
<meta property="og:title" content="Stormy Strong" />
<meta property="og:description" content="..." />
<meta property="og:image" content="https://graph.facebook.com/20501829906/picture" />
<title>Stormy Strong</title>
<link rel="canonical" href="http://www.facebook.com/stormystrongmusic"/>
</head>
<body>
</body>
</html>
请注意,og:url 和链接 rel="canonical" 都指向实际的 Facebook 页面。实际上,当我们尝试通过 Facebook 的调试器运行链接时,这看起来表现良好:https ://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fwww.bandpage-s .com%2Fogp%2F11601543111380992
但是,有一个问题是,在一段时间后,Like 按钮似乎不再返回到页面。这会导致点赞计数关闭,如果您已经喜欢该页面,则按钮不会被“点赞”等。通过转到上面的 OG 调试器 url 手动触发重新抓取可以暂时解决问题。
显然,手动重新触发这些刮擦不是一个可行的解决方案。这里是否发生了多种刮板行为?似乎使用调试器触发的刮板与定期自动重新刮板的刮板不同。
为什么会这样?除了在这里摆脱我们的 ogp 端点“中间人”之外,我们能做些什么来解决这个问题?这似乎是对 og:url 的完美利用。