簡體   English   中英

如何使用 Node js 更新谷歌日歷事件?

[英]How do I update a google calendar event using Node js?

我正在按照 google 日歷文檔通過此處的服務帳戶更新事件。 不幸的是,除了在考慮節點的情況下描述初始設置(它仍然沒有通過服務帳戶顯示過程)之外,谷歌似乎沒有在任何進一步的文檔中包含節點風格。

我的身份驗證設置如下:

//import google library
const {google} = require("googleapis")
//setup scope of auth
const scopes = ['https://www.googleapis.com/auth/calendar.events'];
//load client secrets from a local file
let credentialsRaw = fs.readFileSync(process.env.GOOGLE_CALENDAR_SECRET);
//get credentials as json parsed from raw file contents
let credentials = JSON.parse(credentialsRaw);
//setup auth obj
let auth = new google.auth.JWT(
    credentials.client_email, null,
    credentials.private_key, scopes
);

其次是我嘗試更新事件的代碼:

//setup calendar object
const calendar = await google.calendar({
    version: "v3",
    auth
});

//make call to update calendar event
let updateResults = await calendar.events.update({
    auth: auth,
    calendarId: req.body.calendar_id, //log looks like: i798978asdfjka678sagsdfv3344@group.calendar.google.com
    eventId: req.body.event_id, //log looks like: 12432dsfkjhhwqejhkj12
    resource: {
        "summary": "Test Summary",
        "description": "Test Description",
        "end": req.body.end_time,  //log for end and start look like: { dateTime: '2021-08-09T11:30:00-04:00', timeZone: 'America/New_York' }
        "start": req.body.start_time,
    }
});

我得到的錯誤是“未找到”。 而已。 我已經嘗試根據這個答案使用encodeURIComponent()對 calendarId 進行編碼,但這並沒有改變任何東西。 該答案的發布者稍后還提到不再需要編碼修復。

賬戶方面的一些常見問題我認為我已經正確處理了:

  • 服務帳號所在的項目啟用了日歷api
  • 服務帳戶具有域范圍的權限

下面應該向您展示如何授權服務帳戶。

const {google} = require('googleapis');

const auth = new google.auth.GoogleAuth({
  keyFile: '/path/to/your-secret-key.json',
  scopes: ['https://www.googleapis.com/auth/calendar.events'],
});

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

有關更多信息,請參閱service-account-credentials

未找到

錯誤通常意味着您無權訪問您嘗試訪問的日歷。 我會檢查以確保代表團按照日歷正確設置。 嘗試使用 calendar.get 進行測試以確保您可以訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM