使用nodejs google日历API插入事件会返回400:"缺少结束时间"

roy*_*wie 2 javascript google-calendar-api google-api node.js google-api-nodejs-client

我正在尝试使用服务帐户通过Google Calendar API插入活动.目标是拥有一个所有用户都可以查看的日历:服务器到服务器的设置.

截至目前,我可以正确调用日历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);
            }
        });
    }
})
Run Code Online (Sandbox Code Playgroud)

这会正确返回一个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
    }
})
Run Code Online (Sandbox Code Playgroud)

400返回以下内容:

{ errors: 
    [ { domain: 'global',
        reason: 'required',
        message: 'Missing end time.' } ],
  code: 400,
  message: 'Missing end time.'}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?授权显然是有效的 - 我知道因为我已经用完了当天未经授权的请求,因为我可以列出所有事件.我也指定了一个endTime.为什么谷歌日历API告诉我我没有?

小智 5

我认为问题出在第二个代码段第4行的关键字"资源"中.根据文档,它应该是一个"资源":

 * @param  {object} params.resource - Request body data
Run Code Online (Sandbox Code Playgroud)