gpt4 book ai didi

javascript - 如何通过 NodeJS 访问私有(private) Google 日历?

转载 作者:行者123 更新时间:2023-12-03 01:40:09 25 4
gpt4 key购买 nike

我正在尝试使用 NodeJS Google API 访问私有(private) Google 日历包,但收到错误“错误:未找到”:

Error: Not Found
at createError (/Users/devacc/myproject/node_modules/axios/lib/core/createError.js:16:15)
at settle (/Users/devacc/myproject/node_modules/axios/lib/core/settle.js:18:12)
at Unzip.handleStreamEnd (/Users/devacc/myproject/node_modules/axios/lib/adapters/http.js:201:11)
at emitNone (events.js:111:20)
at Unzip.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

通过 Google 开发者控制台拥有“服务到服务” key 的用户拥有对私有(private)日历的完全权限。在权限中, Angular 色“项目 -> 查看者”和“项目 -> 所有者”均已指定。如果还有其他 Angular 色可以用,那我没找到。

我使用的代码如下,“apiKey”参数是从创建“服务到服务”帐户解析的 JSON 文件,“calendarId”是日历 ID。

function authorize (key) {
return new Promise((resolve, reject) => {
var jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/calendar.readonly'],
null
);

const calendar = google.calendar({
version: 'v3',
auth: jwtClient
});

jwtClient.authorize((err) => {
if (err) {
reject(err);
} else {
resolve(calendar);
}
});
});
}

function listEvents(calendarId, apiKey, days = 2) {
return authorize(apiKey)
.then((calendar) => {
return new Promise((resolve, reject) => {
var minTime = moment();
var maxTime = minTime.clone().add((days ? days : defaultDays), 'days');

calendar.events.list({
calendarId: calendarId,
orderBy: 'startTime',
showDeleted: 'false',
singleEvents: 'true',
timeMin: minTime.toISOString(),
timeMax: maxTime.toISOString()
}, (err, response) => {
if (err) {
reject(err);
} else {
const data = response.data;
resolve(data.items);
}
});
});
});
}

我应该注意,将上述代码与公共(public)日历一起使用效果很好。这只是私有(private)日历给我带来的问题。该日历与拥有 key 的用户属于同一个 GSuite 组织。

最佳答案

结果我需要将服务帐户添加为日历上的用户。这是一种形式:

<name>@<project>.iam.gserviceaccount.com

关于javascript - 如何通过 NodeJS 访问私有(private) Google 日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881952/

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