1

パブリック カレンダー RSS フィードのリストに Google カレンダー エントリを表示する Android アプリケーションを構築しようとしています。カレンダー フィードは公開されていますが、特定のユーザーには共有されていません。

iOS 側では、Google の gdata ライブラリを (パブリック カレンダー RSS と組み合わせて) 使用して、パブリック カレンダー フィードを解析して表示することで、まさにそれを行いました。

残念ながら、gdata は Android と互換性がありません。Google には新しい google-api-java-client ライブラリがありますが、すべてのサンプル コードはデバイス上に存在する Google アカウントと連携して使用され、その後 OAuth を通じて認証されます。

認証情報をデバイスに保存せずに、これらの新しいライブラリでパブリック フィードを取得して解析する方法はありますか? それともまったく認証しますか?

4

1 に答える 1

1

解決策を見つけました。この良い例は、Google Api Java Client の例に関する現在の YouTube の例で見ることができます。

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

パズルの欠けている部分は、次のことを行う必要がありました。

  1. GoogleUrl クラスを拡張します (私は CalendarUrl を使用しました)
  2. フィードの jsonc 出力に一致するオブジェクトを作成します (フィード URL の末尾に &alt=jsonc を追加することで、jsonc 出力を取得できます)。
  3. ステップ 2 のオブジェクトにアノテーション (@Key("NameOfField")) を付けて、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);
于 2012-01-11T16:30:51.900 に答える