【发布时间】:2012-03-22 02:40:02
【问题描述】:
尝试对 facebook 进行图形 api 调用时出现以下错误。我知道我的回调 url 很好,因为当我在 facebook 调试器中测试它时,它可以很好地查看页面。我也在使用 Google App Engine,我真的认为这个错误可能与从 facebook 返回到我的 GAE 应用程序的异步调用有关,而制作 URL Fetch 的线程仍然处于活动状态等待回复。
错误:
{"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 应用程序进行回调,并且我在该响应中没有看到任何错误。
编辑:好的,这显然是一个超时问题。我注意到,当 facebook linter 回调没有启动新的 GAE 实例时,它可以正常工作。当一个新的 GAE 实例被启动时,它需要 50 秒左右的时间。我在 10 秒内从 Facebook 收到错误消息。所以在那个时期,无论是 facebook linter 还是 GAE URL Fetch,都会出现超时。
【问题讨论】:
标签: facebook google-app-engine facebook-graph-api