2012-05-11 18 views
2

私は最近、自分のWebアプリケーションで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

なぜこのようなことが起こったのですか?今日は同じ問題がありました。あなたのコアラスクリプト(あなたがコーラを使用していると仮定します - そうでなければ試してみるべきです) URLがアップしています。つまり、Facebookが投稿を登録すると、指定したURLにメタタグが表示されます。残念ながら、ページ自体はそれを500エラーを与えて、まだロードされていない

ITを解決する方法: はあなたのメタタグを正しくこすりすることを可能にするページがロードされる前に発生してからあなたのポストコール、Facebookのを防ぐためにdelayed_job gemを使用して、 。例えば

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 
関連する問題