如果不使用
googleapis
库的内置方法来修改事件/访问它们,我无法找出访问谷歌日历休息 API 的正确流程。找到的所有访问谷歌日历的解决方案都使用 googleapis
的内置方法,并且 https://developers.google.com/calendar/caldav/v2/guide#connecting_to_googles_caldav_server 表示我们需要执行 oauth 然后连接。
注意:可以使用模块进行 oAuth,但不能用于修改/访问日历
类似下面的内容
const express = require("express");
const { google } = require("googleapis");
const dotenv = require("dotenv");
const axios = require("axios");
app.get("/request", async (req, res) => {
const oauth2Client = new google.auth.OAuth2(
process.env.CLIENT_ID,
process.env.SECRET_ID,
process.env.REDIRECT_URL
);
const token = oauth2Client.credentials.access_token;
try {
const response = await axios({
method: "PROPFIND", // Use PROPFIND to fetch calendar data from CalDAV
url: `https://apidata.googleusercontent.com/caldav/v2/${calid}/events/`, // Google CalDAV endpoint
headers: {
Authorization: `Bearer ${token}`,
Depth: "1",
"Content-Type": "application/xml"
},
data: `
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:getetag />
<C:calendar-data />
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT" />
</C:comp-filter>
</C:filter>
</C:calendar-query>
`
});
console.log("CalDAV Response:", response.data);
} catch (error) {
console.error("Error fetching calendar data:", error);
}
});
通过启用 CalDAV API 作为仅启用的与库一起使用的 Google Calendar API 能够解决问题