2

我試圖通過Google Calendar API插入帶有服務帳戶的事件。目標是讓所有用戶查看一個日曆:服務器到服務器的設置。使用nodejs Google日曆API插入事件返回400:「缺少結束時間」

截至目前,我可以正確地調用日曆API,並列出對事件表示歷:

var moment = require("moment"), 
    googleapis = require("googleapis"), 
    googleCal = googleapis.calendar("v3"); 
    serviceEmail = "********@developer.gserviceaccount.com", 
    serviceKeyFile = "./key.pem"; 

var authClient = new googleapis.auth.JWT(
     serviceEmail, 
     serviceKeyFile, 
     null, 
     ["https://www.googleapis.com/auth/calendar"] 
    ); 

authClient.authorize(function (err, tokens) { 
    if (err) { 
     console.log(err); 
    } else { 
     googleCal.events.list({ 
      auth: authClient, 
      calendarId: "********@gmail.com", 
      fields: { 
       items: ["end","start","summary"] 
      } 
     }, function (err, CL) { 
      if (err) { 
       console.log(err); 
      } else { 
       console.log(CL); 
      } 
     }); 
    } 
}) 

這正確返回一個JSON對象,列出日曆上的所有不同的對象。然而,當我嘗試直接跌破googleCal.events.list調用插入事件:

googleCal.events.insert({ 
    auth: authClient, 
    calendarId: "primary", 
    resources: { 
     start: { 
      dateTime: "2014-07-23T18:25:00.000-07:00", 
      timeZone: "America/New_York" 
     }, 
     end: { 
      dateTime: "2014-07-23T19:25:00.000-07:00", 
      timeZone: "America/New_York" 
     }, 
     summary: "winning @ life", 
     description: "winning @ life description" 
    } 
}, function (err, something) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(something); 
     // do something else 
    } 
}) 

以下400返回:

{ errors: 
    [ { domain: 'global', 
     reason: 'required', 
     message: 'Missing end time.' } ], 
    code: 400, 
    message: 'Missing end time.'} 

如何去修復呢?授權顯然是有效的 - 我知道,因爲我已經用完了當天的未授權請求,因爲我可以列出所有事件。我還指定了一個endTime。爲什麼谷歌日曆API告訴我我沒有?

+0

事實證明,我拼錯'resource'。在上面的代碼中,我使用了'resources',這是錯誤的。 – royhowie

回答

5

我認爲問題出在您的第二個片段的第4行關鍵字「資源」。根據文檔,它應該是一個「資源」:

* @param {object} params.resource - Request body data 
相關問題