gpt4 book ai didi

google-calendar-api - 使用 GCP 服务帐户创建 Google 日历事件

转载 作者:行者123 更新时间:2023-12-04 10:03:00 24 4
gpt4 key购买 nike

我想进行一些操作,以便我的 GCP 服务帐户可以邀请用户参加日历事件。例如,my-service-account@myproject.iam.gserviceaccount.com 会邀请 user@myCorporation.com 参加事件。在我看来,这应该可以通过授予 my-service-account@myproject.iam.gserviceaccount.com 使用日历 API 的权限来实现,而无需 user@myCorporation.com 授予任何额外的权限。

我试图实现这个 example ,但将计算范围和计算 API 调用替换为日历范围和日历 API 调用。我的代码返回错误

Insufficient Permission: Request had insufficient authentication scopes.

我在互联网上查了很多,但我无法判断问题是我做错了什么,还是 Google 不支持我正在尝试做的事情。

这是我的代码:

const {google} = require('googleapis');
const compute = google.compute('v1');

const {GoogleAuth} = require('google-auth-library');

async function main() {
const auth = new GoogleAuth({
scopes: ['https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/compute']
});

//keeping the compute stuff in as a sanity check
//to ensure that the problem is with calendar, not something more general
const authClient = await auth.getClient();
const project = await auth.getProjectId();
const res = await compute.zones.list({project, auth: authClient});
console.log(res.data);

createEvent(auth);
}

/**
* Lists the next 10 events on the user's primary calendar.
* @param {google.auth.OAuth2} auth An authorized OAuth2 client.
*/
function createEvent(auth) {
const calendar = google.calendar({version: 'v3', auth});
calendar.events.insert({
calendarId: 'primary',
event: {
"description": "my test event",
"start": {
"date": "2020-05-20",
},
attendees: [{email: "myGuest@mailinator.com"}]
}
}
);
}

main().catch(console.error);

最佳答案

回答:

您需要在三个位置启用 API 并提供范围:在您的授权代码中、在 GCP 控制台中和 Google 管理控制台中。

更多信息:

正如我在评论中解释的那样,您提供的代码应该可以正常运行。 Insufficient Permission: Request had insufficient authentication scopes. 错误是由于服务帐户未被授予访问 Google 端所需范围的权限。

确保您已完成以下步骤:

  1. 在应用程序中提供范围作为 auth 对象(您已经完成):
const auth = new GoogleAuth({
scopes: ['https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/compute']
});
  1. GCP console 中启用了日历 API用于您的服务帐户 GCP 项目。
  2. 在 GCP 的 OAuth 同意屏幕设置中为您的服务帐户提供所需的范围。
  3. Google Admin console 中向服务帐户添加了所需的范围.这是通过遵循 Security > Advanced Settings > Manage API client access UI 元素,并将服务帐户需要的所有范围分配给服务帐户客户端 ID 来完成的。

注意:这最后一步必须由域管理员完成,任何非域管理员都无法完成。

在这种情况下,您需要联系您的域管理员以授予您的项目 API 访问权限。

引用资料:


相关回答:

关于google-calendar-api - 使用 GCP 服务帐户创建 Google 日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61744176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com