Добавьте календарь Google в указанный c список пользователей календаря, используя учетную запись службы - PullRequest
0 голосов
/ 22 января 2020

Я использую служебную учетную запись для создания новых календарей в нашей системе.

async function newCalendar (email) {
  console.log('creating calendar for username', email, 'as', config.google.calendar.clientEmail);
  const auth = await getAuth();
  const calendar = google.calendar({version: 'v3', auth});
  const newCal = await calendar.calendars.insert({
    resource: {summary: `SYSCALENDAR(${email})`}});
  const calendarId = newCal.data.id;
  const associated = await calendar.acl.insert({
    calendarId,
    requestBody: {
      role: 'reader',
      scope: {
        type: 'user',
        value: email
      }
    },
    sendNotifications: false
  });
  return calendarId;
}

Как показано выше, календари создаются как принадлежащие учетной записи службы, которая выполняет вызов calendars.insert.

Я также внедряю запись calendar.acl, которая, как мне кажется, Предоставляет разрешение пользователю, идентифицированному по электронной почте, на доступ к этому календарю.

В этом фрагменте у меня есть:

sendNotifications: false

Если установить для этого параметра значение true, пользователь получит электронное письмо о новая запись ACL, и можете щелкнуть, чтобы добавить календарь в свой календарьList.

Я не хочу, чтобы пользователь делал это, и вместо этого хотел бы добавить календарь в calendarList в коде, в качестве учетной записи службы.

Это не так просто, как calendarList.insert (calendarId), так как он вставит календарь в учетные записи календаря службы.

1 Ответ

0 голосов
/ 22 января 2020

В последнее время произошли изменения в том, как Google обрабатывает календари, созданные / измененные учетной записью службы.

Больше невозможно добавлять пользователей в такой календарь без одобрения руководства пользователя.

Единственный способ обойти это (работает только для пользователей домена) - Выполнить делегирование полномочий G Suite для всего домена . По сути, заставить учетную запись службы работать от имени пользователя и заставить учетную запись службы принимать приглашение от имени пользователя.

...