首页 文章

使用Google API Java客户端解析公开共享的日历RSS源

提问于
浏览
1

我正在尝试构建一个Android应用程序,该应用程序在公共日历RSS源列表中显示Google日历条目 . 日历源是公共的,但不会与任何特定用户共享 .

我在iOS上通过使用Google的gdata库(结合公共日历RSS)来解析和显示公共日历源代码 .

不幸的是,gdata与Android不兼容 . Google拥有新的google-api-java-client库,但所有示例代码都与设备上的Google帐户一起使用,然后通过OAuth进行身份验证 .

有没有办法使用这些新库来获取和解析公共源,而无需在设备上存储身份验证信息?甚至可以进行身份验证?

1 回答

  • 1

    我找到了解决方案 . Google Api Java客户端示例中的当前YouTube示例就是一个很好的例子 .

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

    这个难题的缺失部分是:

    • 扩展GoogleUrl类(我使用CalendarUrl)

    • 创建与feed的jsonc输出匹配的对象(可以通过将&alt = jsonc附加到feed URL的末尾来获取jsonc输出)

    • 注释(@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);
    

相关问题