2012-03-22 39 views
4

グラフのapiをfacebookに呼び出す際に、以下のエラーが表示されます。コールバックURLはうまくいきます。なぜなら、Facebookブックのデバッガでテストすると、ページはうまく表示されるからです。私もGoogle App Engineを使用していますが、このエラーがFacebookブックからGAEアプリケーションに戻ってくる非同期コールと関係していると思っていますが、URLフェッチを行っているスレッドは応答を待っています。facebook "URLからデータを取得できませんでした"

エラー:GAEはURLフェッチのこれらの種類に動作がおかしい場合

  URL url = new URL("https://graph.facebook.com/me/"); 
      HttpURLConnection connection = (HttpURLConnection) url 
        .openConnection(); 
      connection.setDoOutput(true); 
      connection.setRequestMethod("POST"); 
        connection.setConnectTimeout(30000); 

      OutputStreamWriter writer = new OutputStreamWriter(
        connection.getOutputStream()); 
      writer.write("access_token=" + access_token + "&activity=" + ogpUrl); 
      writer.close(); 

      if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { 
       log.info("GraphApiHelper: success stream"); 
      } else { 
       log.severe("GraphApiHelper: error stream: " 
         + connection.getResponseMessage()); 
      } 

これを引き起こしている可能性がどのような任意の考えや:

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

私のコードは、電話をかけますか? Iv'eは、問題を引き起こしていた場合の接続のタイムアウトを増やしました。それが関連しているかどうかわからないけど、これはfacebookリンターからの完全な一般的なエラーだと思うので、それは呼び出し自体に問題があるかもしれません。

さらに、Facebookのリンターがログ内の自分のGAEアプリにコールバックを行っているのを見ることができます。その応答にエラーは見られません。

編集:これは明らかにタイムアウトの問題です。私は、新しいGAEインスタンスがfacebookリンターコールバックで起動されていないときに正しく動作することに気付いています。新しいGAEインスタンスが起動されると、50秒ほどかかります。私は10秒以内にFacebookからエラーを返す。だから、FacebookのリンターかGAE URLのフェッチかどうか、何かがその期間にタイムアウトしています。

答えて

0

いつもnimbits.comでGAEからFBに書き込みます。心配はありません。

このコードは動作します:

サーバーサイドのFacebookのImpl:

https://github.com/bsautner/com.nimbits/blob/master/nimbits-tds/src/com/nimbits/server/external/facebook/FacebookImpl.java

これはGAE上で動作し、上記のコードで参照されている私の便利のHTTP POSTおよび取得するヘルパークラスです。

https://github.com/bsautner/com.nimbits/blob/master/nimbits-model/src/com/nimbits/server/http/HttpCommonImpl.java

関連する問題