Обновления в реальном времени на Facebook - не пингуются - PullRequest
1 голос
/ 08 июня 2011

Это заняло у меня некоторое время, но мне удалось добраться до последней точки в обновлениях в реальном времени, задача.

Я знаю, что при подписке Facebook должен пинговать мой сервер, проблема в том, что этого никогда не происходит, я всегда получаю один и тот же ответ:

{"error": {"type": "OAuthException", "message": "(# 2201) ответ не соответствует запросу, ожидаемое значение = '1506372182', полученный = '' '}}

Похоже, что он может подключиться к моему серверу (любой другой URL-адрес обратного вызова терпит неудачу с адресом, не доступным), однако я не вижу, чтобы он вызывал меня в журналах.

Я использую движок приложения:

public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws IOException {
...

else if (parameters.containsKey("hub.mode")) {
            log.info("doing hub.mode");
            // Check that challenge is valid.
            if (parameters.get("hub_verify_token").equals(Constants.FACEBOOK_VERIFY_TOKEN)) {
                log.info("hub.mode test is valid");
                resp.setContentType("text/plain");
                resp.getWriter().print(req.getParameter("hub.challenge"));
            }

        }
...


// I want real time information on a specific user, on its feeds.
        String data = URLEncoder.encode("object", "UTF-8") + "="
                + URLEncoder.encode("user", "UTF-8");
        data += "&" + URLEncoder.encode("fields", "UTF-8") + "="
                + URLEncoder.encode("feed", "UTF-8");
        // Send real time updates to this URL.
        data += "&" + URLEncoder.encode("callback_url", "UTF-8") + "="
                + URLEncoder.encode(reconstructedURL.toString(), "UTF-8");
        // A token used to verify that it is actually me who is running the verification process.
        data += "&" + URLEncoder.encode("verify_token", "UTF-8") + "="
                + URLEncoder.encode(Constants.FACEBOOK_VERIFY_TOKEN, "UTF-8");
        data += "&"
                + URLEncoder.encode("access_token", "UTF-8")
                + "="
                +Constants.FACEBOOK_APP_CODE + "|"
                        + Constants.FACEBOOK_APP_SECRET;
        // Subscribe by doing a post.
        URL url = new URL(String.format(
                "https://graph.facebook.com/%s/subscriptions?access_token=%s",
                Constants.FACEBOOK_APP_CODE, accessToken));
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        log.info(String.format("Sent the following data '%s'", data));
        wr.write(data);
        wr.flush();

Я работаю с аутентификацией пользователя и подпиской в ​​реальном времени в одном и том же сервлете.

При чтении ответа я получаю вышеуказанную ошибку и не вижу никаких вызовов моему сервлету (в журналах ядра приложения). Я уверен, что что-то упустил.

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 07 января 2012

Хорошо, решено.Проблема была с разрешениями в web.xml, Facebook не смог добраться до моей страницы.

1 голос
/ 05 января 2012

Я гарантирую, что Facebook действительно может попасть на ваш сайт. Как только вы выясните эту часть, вы можете использовать журналы сервера для проверки трафика и журналы ошибок для всего, что связано с программированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...