2012-03-22 164 views
4

當我試圖製作一個圖形API調用Facebook時出現以下錯誤。我知道我的回調網址是好的,因爲當我在facebook調試器中測試它時,它可以很好地查看頁面。我也在使用Google App Engine,並且我真的認爲這個錯誤可能與從Facebook訪問我的GAE應用程序的異步調用有關,而使得URL提取的線程處於活動狀態等待回覆。臉書「無法從URL檢索數據」

錯誤:

{"error":{"type":"Exception","message":"Could not retrieve data from 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()); 
      } 

任何思考什麼可能會導致這樣或如果GAE奇怪的行爲對這些類型的URL抓取操作的?如果導致問題,我還會增加連接的超時時間。不知道它是否相關,但我認爲這是來自facebook linter的完全通用錯誤,因此可能意味着該調用本身存在問題。

此外,我可以看到Facebook的linter回調我的GAE應用程序在日誌中,我沒有看到任何錯誤,在該響應。

編輯:好吧,這顯然是一個超時問題。我注意到,當一個新的GAE實例沒有在facebook linter回調中啓動時,它可以正常工作。當一個新的GAE實例啓動時,它需要50秒左右的時間。我會在10秒內從Facebook返回錯誤。因此,無論是Facebook linter還是GAE URL抓取,這段時間都會超時。

回答

0

我在nimbits.com上從GAE一直寫給FB的FB - 不用擔心。

此代碼:

服務器端的Facebook默認地將Impl:

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

這是我得心應手HTTP POST和得到幫助類在GAE上的作品,並在上面的代碼中被引用:

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