2012-05-11 116 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