如何使用node.js访问Google日历休息API:https://apidata.googleusercontent.com/caldav/v2/{calendarID}/user而不使用库函数

问题描述 投票:0回答:1

如果不使用

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);
  }
});
google-calendar-api
1个回答
0
投票

通过启用 CalDAV API 作为仅启用的与库一起使用的 Google Calendar API 能够解决问题

© www.soinside.com 2019 - 2024. All rights reserved.