Использование Java API клиента Google для анализа общедоступных RSS-каналов Календаря - PullRequest
1 голос
/ 10 января 2012

Я пытаюсь создать приложение для Android, которое отображает записи календаря Google в списке из общедоступной ленты RSS-календаря.Канал Календаря является общедоступным, но не доступен для любого конкретного пользователя.

Я сделал это на iOS, используя библиотеку Google gdata (в сочетании с общедоступным календарем RSS) для анализа и отображения канала общего календаря.

К сожалению, gdata несовместим с Android.У Google есть новые библиотеки google-api-java-client, но весь пример кода используется в тандеме с учетной записью google, работающей на устройстве, которое затем аутентифицируется через OAuth.

Есть ли способ получить и проанализироватьобщедоступные каналы с этими новыми библиотеками без необходимости хранить информацию об аутентификации на устройстве?Или даже вообще аутентифицироваться?

1 Ответ

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

Я нашел решение. Хороший пример этого можно увидеть в текущем примере YouTube на примере Java-клиента Google Api.

http://code.google.com/p/google-api-java-client/wiki/SampleProgram

Недостающая часть головоломки должна была:

  1. Расширить класс GoogleUrl (я использовал CalendarUrl)
  2. Создание объектов, которые соответствуют выводу jsonc feed (вы можете получить вывод jsonc, добавив & alt = jsonc к конец фида URL)
  3. Аннотировать (@Key ("NameOfField")) объекты из шага 2 для соответствия именам jsonc

После того, как вы это сделаете, будет скомпилирован следующий код, который получит все, что вам нужно:

HttpTransport transport = new NetHttpTransport();
final JsonFactory jsonFactory = new JacksonFactory();
HttpRequestFactory factory = transport.createRequestFactory(new HttpRequestInitializer() {
        @Override
        public void initialize(HttpRequest request) {
            // set the parser
            JsonCParser parser = new JsonCParser(jsonFactory);
            request.addParser(parser);
            // set up the Google headers
            GoogleHeaders headers = new GoogleHeaders();
            headers.setApplicationName("Google-CalendarSample/1.0");
            headers.gdataVersion = "2";
            request.setHeaders(headers);
        }
});

CalendarUrl url = new CalendarUrl(YOUR_FEED_URL);

HttpRequest request = factory.buildGetRequest(url);
CalendarFeed feed = request.execute().parseAs(CalendarFeed.class);
...