Facebook обновление в реальном времени в примере Java

Я работаю над проектом, который использует Facebook Graph Api для сбора информации о публичных постах. Необходимо обновить эти данные в режиме реального времени, когда в эти сообщения приходят изменения. я видел механизм обновления в реальном времени, используя URL-адрес обратного вызова https://developers.facebook.com/docs/graph-api/reference/app/subscriptions/ и https://developers.facebook.com/docs/graph-api/real-time-updates/.. Но я не получил никакой идеи сделать это в Java. Пожалуйста, кто-нибудь, помогите мне, используя пример.

1 ответ

Решение

Обновления в реальном времени доступны для объектов страницы и пользователя. Для обоих требуется токен доступа соответствующей страницы или пользователя.(Для страницы вы можете проверить его, используя me/account или получить его, предоставив разрешения доступа к странице для вашего приложения).

Шаг 1: Вам понадобится общедоступный ip, где Facebook будет публиковать обновления. Шаг 2: Вам нужно настроить приложение fb для запуска установки обновлений в реальном времени

  String appId = //your app id
  String token = //app token appId|appSecret
  String callbackUrl = //your public url
  PostMethod method = new PostMethod();
  method.setURI(new URI("https://graph.facebook.com/" + appId +
           "/subscriptions?callback_url=" + callbackUrl +
         "&object=page&fields=feed&verify_token=streamInit&method=POST&access_token="+
           token, false));

  HttpClient httpClient = new HttpClient();
  if (method != null) {
        int statusCode = httpClient.executeMethod(method);
        String response = new String(method.getResponseBody());
        if (statusCode == HttpStatus.SC_OK) {

                 //Completed streaming initiation
        }else{
           //Streaming initialization failed"
        }
     }
  } catch (Exception e) {

  }

Шаг 3: Это вызовет проверку URL обратного вызова в Facebook. Это может быть сервлет или любой другой, который будет обрабатывать обновления, опубликованные для обратного URL. Facebook предоставит код запроса в запросе на получение, который необходимо отправить повторно.

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  Map parametersMap = request.getParameterMap();
  if (parametersMap.size() > 0) {
     if (request.getParameter("hub.mode").equals("streamInit")) {
        System.out.println("Verify Token: " + request.getParameter("hub.verify_token"));
        System.out.println("Challenge number:" + request.getParameter("hub.challenge"));

        String responseToClient = request.getParameter("hub.challenge");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().write(responseToClient);
        response.getWriter().flush();
        response.getWriter().close();

           //"Completed streaming setup on your url" 
     }
  } 

}

Шаг 3. Добавьте приложение в качестве вкладки страницы, чтобы подписаться на обновления с этой страницы в режиме реального времени. Вам потребуется токен доступа к странице

  String appId = //your application id
  String pageId=//page id to subscribe from
  PostMethod method =
        new PostMethod("https://graph.facebook.com/" + pageId + "/tabs?app_id=" + appId +
              "&method=POST&access_token=" + pageToken);
  HttpClient httpClient = new HttpClient();
  try {
     int statusCode = httpClient.executeMethod(method);
     String response = new String(method.getResponseBody());
     if (statusCode == HttpStatus.SC_OK) {

        // "Completed tab addition"
     }else{
        // "Tab adding failed"
     }

  } catch (Exception e) {
     //"Tab adding failed" 
  }

Шаг 4: Facebook будет публиковать обновления по запросу на ваш URL обратного вызова.

Другие вопросы по тегам