Работа над созданием события Календаря Google для определенного Календаря из серверной части.Как и когда кто-то генерирует собрание в веб-приложении, его следует добавить в общий календарь Google из бэкэнда (запущенного с использованием JAVA - Spring boot).
Пользователь, генерирующий событие, должен быть авторизованным пользователем, чтобы сделать это.
Я следовал этой документации для первоначальной настройки в Java.
Документы JAVA - начальная настройка
Зависимости, которые я использовал,
compile 'com.google.api-client:google-api-client:1.23.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-calendar:v3-rev305-1.23.0'
Затем, чтобы создать событие, которое я пробовал, это,
public String createCalendarEvent() throws GeneralSecurityException, IOException {
String calendarId = "primary";
// Build a new authorized API client service.
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
Event event = new Event()
.setSummary("Testing Event Creation 1")
.setLocation("India")
.setDescription("Testing Event Creation");
EventDateTime start = new EventDateTime()
.setDate(new DateTime("2019-02-26"));
event.setStart(start);
EventDateTime end = new EventDateTime()
.setDate(new DateTime("2019-02-28"));
event.setEnd(end);
event = service.events().insert(calendarId, event).execute();
log.debug("Event is created and HTML link is: " + event.getHtmlLink());
return event.getHtmlLink();
}
getCredential()
метод заботится об авторизации, как показано ниже:
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
// Load client secrets.
InputStream in = CalendarEventService.class.getClassLoader().getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.setApprovalPrompt("force")
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
return credential;
}
Необходимые OAuth ClientID и ClientSecret расположены по адресу CREDENTIALS_FILE_PATH
.Во время работы он генерирует AUTH_TOKEN внутри TOKENS_DIRECTORY_PATH
и создает событие в календаре.
Теперь последующее выполнение выполняется без каких-либо проблем при изменении пользователя.
Мне требуется создать событие в календаре тем пользователем, который в данный момент вошел в систему (должен быть проверен на OAuth) и из бэкэнда как этот .