Google 日历 API V3 不遵守 nodejs Express 应用程序中的 timeMin timeMax 参数

Google Calendar API V3 doesn't respect timeMin timeMax parameters in nodejs Express application

我已经设法获取两个日期之间的所有事件,如 this 纯 nodeJs 环境示例中所述。

但是当我对 nodeJs Express App 使用相同的编码时,它不考虑 timeMin 和 timeMax 参数。

相反,我从我在日历上创建第一个事件的日期开始获取所有事件。 这是我的代码块。

function listEvents(auth) {
  var calendar = google.calendar('v3');
  calendar.events.list({
    auth: auth,
    calendarId: 'primary',

    timeMin: (new Date(Date.parse("2018-01-22"))).toISOString(),
    timeMax: (new Date(Date.parse("2018-02-27"))).toISOString(),

    singleEvents: true,
    orderBy: 'startTime'
  }, function(err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
      return;
    }
    var events = response.items;
    if (events.length === 0) {
      console.log('No upcoming events found.');
    }
    else {
       // Do Some Stuff ...............
    }
  });
}

我在这里错过了什么..?

入门示例似乎不正确,但与文档一致。

google-auth-library 的

V0.x 使用请求库,因此传递查询字符串选项就可以了:

calendar.events.list(
    {
        auth: auth,
        calendarId: 'primary',
    }, 
    { 
        qs: {
            timeMin: (new Date(Date.parse("2018-01-22"))).toISOString(),
            timeMax: (new Date(Date.parse("2018-02-27"))).toISOString(),
            singleEvents: true,
            orderBy: 'startTime'
        } 
    }, function(err, response) {
     ...

答案url是here

快速入门使用旧版本的 google 授权库。这使它对我有用:

将库更新到最新

npm i google-auth-library@latest

然后在快速启动文件中,像这样更新您的代码

let auth = google.auth;

let events = response.data.items;

感谢并修改自:https://github.com/google/google-api-nodejs-client/issues/946#issuecomment-360400714