Error: Service accounts cannot invite attendees without Domain-Wide Delegation of Authority
Error: Service accounts cannot invite attendees without Domain-Wide Delegation of Authority
我使用 JWT 令牌作为服务帐户的身份验证,如果我在活动中添加参与者,我会收到上述错误,我将其开发为服务,所以我可以在不使用 oauth2 授权的情况下解决这个问题吗?
const scopes = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/gmail.send']
const calendar = google.calendar({ version: "v3" });
let rawdata = fs.readFileSync('googleCalendar\calendarcred.json');
let CREDENTIALS = JSON.parse(rawdata);
let auth = new google.auth.JWT(
CREDENTIALS.client_email,
null,
CREDENTIALS.private_key,
scopes
);
为了在 Google 日历中使用服务帐户,您需要为您的 gsuite 帐户设置 Perform Google Workspace Domain-Wide Delegation of Authority。
工作区 (Gsutie) 管理员授权服务帐户后,您将能够 运行 模拟。请记住将身份验证设置为您希望服务帐户模拟的域中的用户。
import { JWT } from "google-auth-library";
const auth = (await google.auth.getClient({
scopes: ["https://www.googleapis.com/auth/admin.directory.user"],
})) as JWT;
auth.subject = process.env.GOOGLE_ADMIN_EMAIL;
或者,一旦服务帐户被授予访问域的权限,我想您也可以与服务帐户共享日历,这应该可以直接访问日历,而无需模拟域中的用户。但是我不认为它会发送通知电子邮件。
我使用 JWT 令牌作为服务帐户的身份验证,如果我在活动中添加参与者,我会收到上述错误,我将其开发为服务,所以我可以在不使用 oauth2 授权的情况下解决这个问题吗?
const scopes = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/gmail.send']
const calendar = google.calendar({ version: "v3" });
let rawdata = fs.readFileSync('googleCalendar\calendarcred.json');
let CREDENTIALS = JSON.parse(rawdata);
let auth = new google.auth.JWT(
CREDENTIALS.client_email,
null,
CREDENTIALS.private_key,
scopes
);
为了在 Google 日历中使用服务帐户,您需要为您的 gsuite 帐户设置 Perform Google Workspace Domain-Wide Delegation of Authority。
工作区 (Gsutie) 管理员授权服务帐户后,您将能够 运行 模拟。请记住将身份验证设置为您希望服务帐户模拟的域中的用户。
import { JWT } from "google-auth-library";
const auth = (await google.auth.getClient({
scopes: ["https://www.googleapis.com/auth/admin.directory.user"],
})) as JWT;
auth.subject = process.env.GOOGLE_ADMIN_EMAIL;
或者,一旦服务帐户被授予访问域的权限,我想您也可以与服务帐户共享日历,这应该可以直接访问日历,而无需模拟域中的用户。但是我不认为它会发送通知电子邮件。