1

我正在尝试复制 Amazon.com 正在做的一些事情。一个人结账后,他们就可以在社交网络上分享他们刚刚购买的产品。

然而,在我的网站上,facebook 永远不会抓取最终的预订页面,因为它们是在用户输入信用卡信息后动态驱动的。

我知道 linter 可以用来强制解除缓存……但这真的不是这里的故事……

我当然是指存储在元标记中的 OG 信息。

   <meta property="og:title" content="The Rock"/>
    <meta property="og:type" content="movie"/>
    <meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
    <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
    <meta property="og:site_name" content="IMDb"/>
    <meta property="fb:admins" content="USER_ID"/>
    <meta property="og:description"
          content="A group of U.S. Marines, under command of
                   a renegade general, take over Alcatraz and
                   threaten San Francisco Bay with biological
                   weapons."/>

我还没有找到任何明确的文档来说明 facebook 是否真的需要在 opengraph 工作之前抓取一个页面。如果上面的内容不在可抓取的页面上,它还能工作吗?

如果不?有没有解决的办法?

4

1 回答 1

2

是的,要让 Like-Button 和 Open Graph-Metadata 起作用,Facebook肯定必须抓取您的页面(否则如何获取元标记的内容?)。这是关于 OG-metatags 的(旧)文档,它提供了一个很好的概述:

https://developers.facebook.com/docs/opengraphprotocol/

这个想法是,图中的每个对象都表示在一个唯一的 URL 上,其中包含 OG 元数据。对于您的应用程序,这意味着动态生成的预订页面必须可供爬虫使用,例如http://yourapp.com/booking.php?id=45345您将输出以下标签:

<meta property="og:title" content="Booking No. 45345"/>
<meta property="og:type" content="order"/>
<meta property="og:description" content="..."/>
<meta property="og:url" content="http://yourapp.com/booking.php?id=45345"/>

该 URL 的 Like-Button 生成的故事将包含返回订单页面的链接。

现在,问题是,您真的希望预订页面可以公开且永久可用吗?如果答案是“否”,那么 Like-Button 和 OG-metatags 可能不是在您的应用程序中共享的正确选择。您应该考虑让您的用户在 Feed 对话中分享故事,它可以让您制作个人故事:

https://developers.facebook.com/docs/reference/dialogs/feed/

于 2013-02-03T17:24:31.063 回答