0

我们正在尝试使文章阅读器在用户阅读文章时发生发布。

我们面临的问题是文章 URL 不公开,因为我们需要确保阅读文章的用户应该登录到 FB。

例如,我们的文章 URL 类似于 SERVER_NAME/article/view/ARTICLE_SLUG。

每当任何新用户尝试单击此对象的帖子时,他们都会被带到权限页面,一旦他们允许,他们就会看到该文章。但是这个页面没有被 facebook 抓取,因此没有发布。

我们尝试创建一个独立于登录的 URL,例如 SERVER_NAME/article/ARTICLE_SLUG,并且在 og:url 中我们设置为 SERVER_NAME/article/view/ARTICLE_SLUG 认为当发布发生时它将显示 SERVER_NAME/article/view/ARTICLE_SLUG 作为 URL但它没有发生。

有人可以建议最好的方法是什么。

4

2 回答 2

1

当 facebook抓取您的页面时,他们会使用一个非常具体的用户代理字符串:

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

您可以在“Facebook 何时抓取我的页面?”下的“赞”按钮文档中了解它。部分。

当您收到请求时,请检查请求中的用户代理字符串,如果它与 facebook抓取工具匹配,则允许该请求并仅返回一个仅包含 meta 和 og 标签的简单 html。由于 facebook 也会缓存结果,因此每天发生的事情不应该超过一次,正如它所说:

Facebook 每 24 小时抓取一次您的页面,以确保属性是最新的。当 Open Graph 页面的管理员单击 Like 按钮以及将 URL 输入 Facebook URL Linter 时,该页面也会被抓取。Facebook 会观察您 URL 上的缓存标头 - 它会按优先顺序查看“过期”和“缓存控制”。但是,即使您指定更长的时间,Facebook 也会每 24 小时抓取一次您的页面。

于 2012-05-03T09:39:57.383 回答
0

假设登录用户可以在 SERVER/article/view/SLUG(查看 URL)上查看您的文章。您的主页链接到 SERVER/article/SLUG(摘要 URL)上的文章摘要视图,并带有一个登录按钮,可将您带到查看 URL。

您的应用在视图 URL 上发布读取操作,Facebook linter 无法抓取该操作。在这种情况下,您应该设计您的应用程序,以便新流量转到摘要 URL,如果用户已经登录,则该摘要 URL 将重定向到视图 URL。摘要 URL 成为该文章对象的规范 URL,您应该针对该 URL 发布操作,因为它将是公开的。

为此,请将元标记添加<og:url content="SERVER/article/SLUG" />到视图 URL摘要 URL 元数据。

于 2012-05-03T10:01:29.253 回答