Ошибка Google Calendar API при создании события с Hangouts Meet
При интеграции Google Calendar API в Go-приложения разработчики часто сталкиваются с ошибкой googleapi: Error 400: Invalid conference type value., invalid. Она возникает, когда метод Events.Insert пытается добавить видеоконференцию Hangouts Meet, но API не может распознать тип конференции. В этой статье мы разберём причины проблемы и покажем, как её исправить.
Почему возникает ошибка Invalid conference type value?
Ошибка invalid появляется из-за неправильной настройки поля ConferenceSolutionKey.Type. В коде часто указывают значение "hangoutsMeet", но Google Calendar API ожидает строку "hangoutsMeet" в нижнем регистре, без пробелов. Однако даже правильное написание не гарантирует успех - необходимо убедиться, что ваш проект Google Cloud настроен для работы с дополнениями конференций.
Как исправить ошибку при создании события в календаре Google
Чтобы корректно создать событие с видеоконференцией, выполните следующие шаги:
1. Проверьте настройки Google Cloud Console
- Перейдите в Google Cloud Console и выберите ваш проект.
- Откройте раздел API и сервисы → Библиотека.
- Убедитесь, что включён Google Calendar API и Google Meet API (если он доступен).
- В разделе Учётные данные проверьте, что используется правильный OAuth 2.0 Client ID с доступом к календарю.
2. Используйте корректный тип конференции
В поле ConferenceSolutionKey.Type всегда указывайте "hangoutsMeet" - это единственное допустимое значение для Hangouts Meet. Не используйте "googleMeet" или другие вариации. Пример правильной настройки:
ConferenceSolutionKey: &calendar.ConferenceSolutionKey{
Type: "hangoutsMeet",
},
3. Добавьте параметр ConferenceDataVersion
При вызове Events.Insert обязательно передавайте ConferenceDataVersion(1). Без этого параметра Google API игнорирует конференцию. Убедитесь, что код выглядит так:
event, err := calendarService.Events.Insert("calendar@gmail.com", event).ConferenceDataVersion(1).Do()
4. Проверьте права доступа аккаунта
Убедитесь, что аккаунт, от имени которого выполняется запрос, имеет права на создание событий с конференциями. Для тестирования используйте аккаунт с ролью Редактор или Владелец календаря.
Пример правильного кода на Go
Ниже приведён исправленный вариант функции CreateEvent, который создаёт событие с видеоконференцией Hangouts Meet без ошибок:
import (
"time"
"google.golang.org/api/calendar/v3"
"github.com/google/uuid"
)
func CreateEvent(startDate time.Time, duration int, headerText string) (string, error) {
endDate := startDate.Add(time.Hour * time.Duration(duration))
event := &calendar.Event{
Summary: headerText,
Description: "AutomateCreate",
Start: &calendar.EventDateTime{
DateTime: startDate.Format(time.RFC3339),
TimeZone: "Europe/Moscow",
},
End: &calendar.EventDateTime{
DateTime: endDate.Format(time.RFC3339),
TimeZone: "Europe/Moscow",
},
ConferenceData: &calendar.ConferenceData{
CreateRequest: &calendar.CreateConferenceRequest{
ConferenceSolutionKey: &calendar.ConferenceSolutionKey{
Type: "hangoutsMeet",
},
RequestId: uuid.New().String(),
},
},
}
event, err := calendarService.Events.Insert("calendar@gmail.com", event).ConferenceDataVersion(1).Do()
if err != nil {
return "", err
}
text := event.Summary + "/n" + event.HangoutLink
return text, nil
}
Дополнительные советы по работе с Google Calendar API
- Всегда обрабатывайте ошибки от API - это поможет быстро выявить проблемы с авторизацией или форматом данных.
- Используйте
time.RFC3339для форматирования даты, чтобы избежать несоответствий часовых поясов. - Для отладки включите логирование запросов к API, указав
googleapi.WithAPIKey()или настроив HTTP-клиент.
Следуя этим рекомендациям, вы успешно создадите события в Google Calendar с видеоконференциями и избежите ошибки Invalid conference type value. Если проблема сохраняется, проверьте, не устарела ли версия библиотеки google.golang.org/api, и обновите её до последней.