Почему запрос к Google Calendar API выбрасывает 403 ошибку при создании события?
Пытаюсь добавлять события в календарь при помощи Google API. Зарегистрировал приложение в Google Cloud, создал OAuth2.0 Credentials, запросил доступ на создание событий и изменение/просмотр календарей, реализовал авторизацию и получение токена. Методы просмотра календарей и событий отрабатывают, но метод добавления события выбрасывает ошибку 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"
}
}
Не понимаю, что я делаю не так. Как я должен передавать сервису ключ API? Сейчас код выглядит так:
Получение информации о клиенте:
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());
}
}
Вызов метода добавления события:
@GetMapping("/addEvent")
public Event addEvent(OAuth2AuthenticationToken authentication) throws Exception {
OAuth2AuthorizedClient client = loadClientInfo(authentication);
return googleService.addEvent(client.getAccessToken().getTokenValue());
}
Добавление события:
public Event addEvent(String tokenValue) throws IOException {
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();
}
Ответы (1 шт):
The request is missing a valid API key.
Не буду утверждать наверняка, но Calendar API не новый. А для INSERT методов всегда надо было поставлять API ключ даже для авторизованного пользователя, т.к. система не умела считать запросы иначе*.
Ну, как бы новой версии API я не вижу. Следовательно, создайте тут же в проекте ключ и отправляйте его вместе с урлом добавления записей
https://бла-бла-бла/?key=API_KEY
* - Чисто сугубо мое индивидуальное мнение