Пытаюсь написать приложение, которое могло бы добавлять Events в Google Calendar. В документации написано, что для этого нужно, чтобы при авторизации были предоставлены права доступа
https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.events
Эти права я перечислил в файле application.properties:
spring.security.oauth2.client.registration.google.client-id=****
spring.security.oauth2.client.registration.google.client-secret=****
spring.security.oauth2.client.registration.google.scope=profile,email,https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
За получение клиента, у которого можно взять access token, отвечает метод loadClientInfo:
private OAuth2AuthorizedClient loadClientInfo(OAuth2AuthenticationToken authentication) throws Exception {
try {
OAuth2AuthorizedClient client = authorizedClientService
.loadAuthorizedClient(
authentication.getAuthorizedClientRegistrationId(),
authentication.getName());
return client;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
Этот токен я передаю в метод, в котором создаю событие в календаре.
GoogleCredential credential = new GoogleCredential().setAccessToken(tokenValue);
Calendar service = new Calendar.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();
// Создание события
return service.events().insert(calendarId, event).execute();
Но в ответ я получаю ошибку 403
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"errors": [
{
"message": "The request is missing a valid API key.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}