facebook“无法从URL检索数据”

时间:2012-03-22 02:40:03

标签: facebook google-app-engine facebook-graph-api

尝试对facebook进行图形api调用时,我收到以下错误。我知道我的回调网址很好,因为当我在facebook调试器中测试它时,它会很好地查看页面。我也在使用谷歌应用引擎,我真的认为这个错误可能与从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,都会在那段时间内超时。

2 个答案:

答案 0 :(得分: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

这是我方便的http帖子和get帮助类,适用于GAE并在上面的代码中引用:

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

答案 1 :(得分:0)

也可能存在一些并发问题。 看到这个,它对我有用。 Facebook Open Graph from Rails Heroku