2012-05-11 117 views
2

我最近在我的网络应用程序上启用了Facebook Open Graph的东西(所以刚刚阅读了这个和那个)。现在,当用户发布某些内容时,我会将请求发布到Facebook,作为控制器中页面加载的一部分。问题是我收到以下错误:Facebook Open Graph Scraping

HTTP 500: Response body: {"error":{"type":"Exception","message":"Could not retrieve data from URL."}}

我首先想到的是,加载页面打开请求被阻断OG信息的任何FB刮,因为它似乎它已经被缓存后,我不再收到此错误。

这是可能吗?如果是这样,解决它的最佳方法是什么?

+1

有一些可能会发生的不同的问题,所以它可以帮助您发布与测试URL。此外,您可以使用[Facebook Open Graph Debugger](https://developers.facebook.com/tools/debug)强制重新进行覆盖。这可能会给你一些关于错误的信息,至少你可以监视你的访问日志以寻找来自'facebookexternalhit'的请求来验证你的对象是否被缓存。 –

回答

3

为什么会发生这样的问题: 今天我有同样的问题,这是因为你的考拉脚本(假设你使用考拉 - 如果不是,你应该尝试一下,因为它很棒)在你之前发送它的请求到Facebook网址已启用。这意味着,当Facebook注册该帖子时,它会涉及您指定用来获取元标签的网址。不幸的是,页面本身并没有被加载呢,给它一个500错误

如何解决这个问题: 使用delayed_job gem,以防止在页面加载之前发生的电话后,让Facebook的正确刮你的元标记。

例如:

def post_to_facebook([ACCESS_TOKEN]) 
    graph = Koala::Facebook::API.new([ACCESS TOKEN]) 
    graph.put_connections("me", "[APP NAMESPACE]:[ACTION]", :[OBJECT TYPE] => [OBJECT_URL]) 
end 
handle_asynchronously :post_to_facebook