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 
相关问题