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)可以将日历插入到服务帐户日历列表中。最近谷歌处理由服务帐户创建/修改的日历的方式发生了变化 在没有用户手动批准的情况下,无法再将用户添加到此类日历中。 绕过它的唯一方法(仅适用于域用户)是。基本上,让服务帐户代表用户工作,让服务帐户代表用户接受邀请