当尝试对 facebook 进行图形 api 调用时,我收到以下错误。我知道我的回调 url 很好,因为当我在 facebook 调试器中测试它时,它可以很好地查看页面。我也在使用 Google App Engine,我真的认为这个错误可能与从 facebook 返回到我的 GAE 应用程序的异步调用有关,而进行 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 Fetch,有些东西都超时了。
我一直在 nimbits.com 上从 GAE 给 FB 写信 - 不用担心。
这段代码的工作原理:
服务器端 Facebook 实现:
https://github.com/bsautner/com.nimbits/blob/master/nimbits-tds/src/com/nimbits/server/external/facebook/FacebookImpl.java https://github.com/bsautner/com.nimbits/blob/master/nimbits-tds/src/com/nimbits/server/external/facebook/FacebookImpl.java
这是我方便的 http 帖子并获取适用于 GAE 的帮助程序类,并在上面的代码中引用:
https://github.com/bsautner/com.nimbits/blob/master/nimbits-model/src/com/nimbits/server/http/HttpCommonImpl.java https://github.com/bsautner/com.nimbits/blob/master/nimbits-model/src/com/nimbits/server/http/HttpCommonImpl.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)