API календаря Google — Аутентификация без OAuth

#authentication #google-calendar-api

Вопрос:

Я пытаюсь создать скрипт, который запускается на выделенном сервере для доступа к API календаря Google. Этот скрипт должен иметь доступ к нашим учетным записям Google Calendar, скажем, пользователя X, и ко всем другим календарям, к которым у пользователя X есть доступ. Мне не нужно запускать это через веб-браузер, а затем иметь доступ к календарям других людей (за пределами нашей организации). Это должно выполняться на сервере и иметь доступ только к календарям нашей организации (G Suite) и пользователям в нашей учетной записи G-Suite. В основном я хочу сделать следующие вещи:

  1. Создавайте календари и предоставляйте доступ другим участникам организации (G Suite)
  2. Создание/изменение событий в этих календарях
  3. Отправляйте уведомления о событиях

Из просмотра API календаря Google (https://developers.google.com/calendar/api/guides/auth), похоже, что единственный способ доступа-это аутентификация по протоколу OAuth, которая мне вообще не нужна, так как она будет выполняться на выделенном сервере через скрипт.

Есть ли способ сделать это? Я что-то упускаю в документации по API? Это кажется странным, что я не смогу получить доступ к нашим собственным данным календаря через серверный процесс и действительный/ограниченный ключ API (который я настроил).

Комментарии:

1. Вам потребуется создать учетную запись службы в GCP, чтобы разрешить межсерверную аутентификацию. Он по-прежнему использует OAuth 2.0, который нельзя удалить, но, по крайней мере, вам не нужно будет проходить аутентификацию вручную для каждого пользователя.

Ответ №1:

Ключи Api предоставляют вам доступ только к общедоступным данным, а не к личным данным пользователей.

Вам нужно будет настроить аутентификацию учетной записи службы и попросить администратора Google workspace настроить делегирование домена в учетной записи службы. Это даст учетной записи службы возможность предварительно выполнять действия от имени пользователя, которому принадлежат эти календари.