[Java] Trabajando con Google Calendar API v3

Casi no hay documentación y ejemplos. Trabajando con los calendarios del API de Google me di cuenta que se necesitan varios pasos para poder si quiera crear un calendario o manejar eventos.

  • Crear el calendario directo en calendar.google.com
  • Obtener su calendarId dando clic en configuración del calendario
  • configuracion de calendario
  • id calendario
  • Compartirlo con la dirección de mail que se genera cuando creas un permiso en la consola de google que debe ser tipo Service Account y de la forma elmailmuylargo123123@developer.gserviceaccount.com
  • compartir
  • Tener la llave formato p12 para usarlo en el código (en el ejemplo la tenemos guardada en la carpeta “res” en raíz).
  • Y, finalmente, ya debería ser posible instanciarlo en el código java.

/* Obtiene el servicio para instanciar un calendario de Google API v3 * @author Martín Roldán Araujo DTI * @return client * @throws GeneralSecurityException * @throws IOException */ public static Calendar getCalendarService() throws GeneralSecurityException, IOException { GoogleCredential credentials = new GoogleCredential.Builder() .setTransport(GoogleNetHttpTransport.newTrustedTransport()) .setJsonFactory(new GsonFactory()) .setServiceAccountId("unmailmuylargo123123123@developer.gserviceaccount.com") .setServiceAccountScopes(Arrays.asList(CalendarScopes.CALENDAR)) .setServiceAccountPrivateKeyFromP12File(new File("C:/res/llave2.p12")) .build(); Calendar client = new Calendar.Builder(GoogleNetHttpTransport.newTrustedTransport(), new GsonFactory(), credentials).build(); return client;

El método getCalendar

Service nos devuelve un objeto tipo calendario, el cual nos ayudará a instanciar nuestro calendario y poder hacer uso de él, por ejemplo:

Calendar tmp = getCalendarService(); com.google.api.services.calendar.model.Calendar calendario = tmp.calendars().get("calendarid-del-calendario-deseado@group.calendar.google.com").execute(); System.out.println("Echo: "+calendario.getEtag()+" Summary: "+calendario.getSummary());

Un tip al crear eventos y notificar en mi otro post

Un demo (llenar mínimo nombre, lugar, fecha y hora)

El código fuente (No encontré el war original, pero mando lo que tengo.)