NullPointerException при доступе к списку календарей пользователя с помощью API Календаря Google - PullRequest
0 голосов
/ 12 января 2012

Я хочу использовать API Календаря Google для извлечения календарей, событий и т. Д. У меня есть токен аутентификации из класса AccountManager в Android.Таким образом, если пользователь вошел в систему с мобильного телефона, используя свою учетную запись Google, я могу легко получить связанный с ним токен аутентификации.После этого сделайте следующее:

 public Calendar useCalendarAPI(final String accessToken) {

 try{

      HttpTransport transport = new NetHttpTransport();
      AccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
      Calendar.Builder builder = Calendar.builder(transport, new JacksonFactory());
      builder.setApplicationName("My App Name");
      builder.setHttpRequestInitializer(accessProtectedResource);
      JsonHttpRequestInitializer json = new JsonHttpRequestInitializer() {
          public void initialize(JsonHttpRequest request) {
                CalendarRequest calRequest = (CalendarRequest) request;
                calRequest.setKey(Common.API_KEY);
                calRequest.setOauthToken(accessToken);
            }
            };
      builder.setJsonHttpRequestInitializer(json);

      Calendar calendarService= builder.build();

      if(calendarService!= null)
      {
          return calendarService;
      }
      else
          return null;
      }catch (Exception e) {
        // TODO: handle exception
          e.getMessage();
    }

После этого я получу объект Calendar, называемый "calendarService".

public void getCalendarsList()
{
      try     
      {
            CalendarList calendarList = calendarService.calendarList().list().execute();

            while (true) {
                for (CalendarListEntry calendarListEntry : calendarList.getItems()) {
                    System.out.println(calendarListEntry.getSummary());
                }
                String pageToken = calendarList.getNextPageToken();
                if (pageToken != null && !pageToken.equalsIgnoreCase("")) {
                    calendarList = calendarService.calendarList().list().setPageToken(pageToken).execute();

                } else {
                    break;
                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}   

Это скопировано из документации API Календаря Google.Проверьте эту ссылку здесь
Но я получаю исключение NullPointer в следующей строке

CalendarList calendarList = calendarService.calendarList().list().execute();

Пожалуйста, предложите что-нибудь.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 мая 2012

Похоже, вам нужно передать calendarService в качестве параметра getCalendarsList() function

0 голосов
/ 17 января 2012

Эй, у меня есть этот небольшой рабочий образец, который был сделан с использованием того же документа календаря, на который вы тоже ссылались.Также было бы полезно, если бы вы могли дать трассировку стека вместе с кодом.

 public static void main(String[] args) throws IOException {
    HttpTransport httpTransport = new NetHttpTransport();
    JacksonFactory jsonFactory = new JacksonFactory();
    String clientId = "CLIENT ID";
    String clientSecret = "CLIENT SECRET";
    String redirectUrl = "urn:ietf:wg:oauth:2.0:oob";
    String scope = "https://www.googleapis.com/auth/calendar";
    String authorizationUrl = new GoogleAuthorizationRequestUrl(clientId, redirectUrl, scope)
    .build();
    System.out.println("Go to the following link in your browser:");
    System.out.println(authorizationUrl);
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("What is the authorization code?");
    String code = in.readLine();
    AccessTokenResponse response = new GoogleAuthorizationCodeGrant(httpTransport, jsonFactory,
        clientId, clientSecret, code, redirectUrl).execute();
    GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(
        response.accessToken, httpTransport, jsonFactory, clientId, clientSecret,
        response.refreshToken);

    Calendar calendarService = Calendar.builder(httpTransport, jsonFactory)
        .setApplicationName("YOUR_APPLICATION_NAME")
        .setHttpRequestInitializer(accessProtectedResource)
        .build();
    try     
    {
      com.google.api.services.calendar.model.CalendarList calendarList = calendarService.calendarList().list().execute();

      while (true) {
        for (CalendarListEntry calendarListEntry : calendarList.getItems()) {
          System.out.println(calendarListEntry.getSummary());
        }
        String pageToken = calendarList.getNextPageToken();
        if (pageToken != null && !pageToken.equalsIgnoreCase("")) {
          calendarList = calendarService.calendarList().list().setPageToken(pageToken).execute();

        } else {
          break;
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...