當我試圖製作一個圖形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抓取,這段時間都會超時。