Javascript 使用服务帐户将google日历添加到特定用户日历列表

Javascript 使用服务帐户将google日历添加到特定用户日历列表,javascript,google-api,google-calendar-api,Javascript,Google Api,Google Calendar Api,我正在使用服务帐户在系统中创建新日历 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}); con

我正在使用服务帐户在系统中创建新日历

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条目的电子邮件,并可以单击将日历添加到他们自己的日历列表中

我不希望用户必须这样做,而是希望将日历作为服务帐户以代码的形式添加到日历列表中


这并不像calendarList那么简单。插入(calendarId)可以将日历插入到服务帐户日历列表中。

最近谷歌处理由服务帐户创建/修改的日历的方式发生了变化

在没有用户手动批准的情况下,无法再将用户添加到此类日历中。 绕过它的唯一方法(仅适用于域用户)是。基本上,让服务帐户代表用户工作,让服务帐户代表用户接受邀请