gpt4 book ai didi

javascript - Google 日历事件观看错误 401 未经服务帐户授权

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

我正在尝试观看多个日历以获取任何更改的推送通知:

https://developers.google.com/calendar/v3/reference/events/watch

我不断收到错误:

请求失败,状态代码为 401

我正在使用一个服务帐户,我已授予该帐户访问每个日历的权限。

我的配置是:

{
"type": "service_account",
"project_id": "eventapi-219011",
"private_key_id": "5ac83bf728fc9f3f635cec8096170573620dd388",
"private_key": "xxx",
"client_email": "googlecalendarservice@eventapi-219011.iam.gserviceaccount.com",
"client_id": "111757078202416067272",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/googlecalendarservice%40eventapi-219011.iam.gserviceaccount.com"
}

我已验证域名。这是我的代码,有什么想法可以访问吗?

let { google } = require("googleapis");

let privatekey = require("../config.json");
let axios = require("axios");

let ids = [];
let promises = [];

async function main() {

const client = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
[
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/calendar.readonly"
]
);

const token = await client.authorize();


let config = {
headers: {
"Content-Type": "application/json;charset=UTF-8",
Authorization: token.token_type + " " + token.access_token
},
type: "web_hook",
address: "https:/rguc-calendars.firebaseapp.com/notifications"
};

axios
.post(
"https://www.googleapis.com/calendar/v3/calendars/rguc.co.uk_5hbugn8f7a4j3g7p6im1r1s1co@group.calendar.google.com/events/watch",
config
)
.then(function(response) {
// console.log("latest" + response);
})
.catch(function(error) {
console.log(error);
})
}

main();

我可以使用以下方法获取日历列表:

const res = await client.request('https://www.googleapis.com/calendar/v3/users/me/calendarList');

但不是 watch ,这是我的凭据,我应该使用哪个?

API key 1
Oct 10, 2018
AIzaSyBkAEZGoQwB0f-Kmq4mCCzm93422up8oQw

OAuth 2.0 client IDs
Web client 1
793554220141-91kh36o41rq2b337d1fcl50lvbqesl36.apps.googleusercontent.com

Service account keys
5ac83bf728fc9f3f635cec8096170573620dd388 GoogleCalendarService

最佳答案

为了使服务帐户正常工作,必须对其进行预授权。获取服务帐户电子邮件地址并与服务帐户共享日历,就像与任何其他用户一样。

这还应该让您能够访问日历的推送通知。

如果这不起作用,请确保服务帐户是创建初始监视请求的帐户。

多个范围

日历使您可以完全访问用户日历,没有理由要求只读,只需使用您需要的日历

https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/calendar.readonly"

服务帐户

我不知道服务帐户可以与 javascript 一起使用,这太棒了,你能做到这一点。

关于javascript - Google 日历事件观看错误 401 未经服务帐户授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54904315/

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