在nodejs应用程序中调用时,日历列表不返回结果

时间:2017-03-15 16:19:00

标签: google-calendar-api

let scopes = ["https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/calendar.readonly"];
if (checker(googleKey)&&checker(jwtClient)) {
    jwtClient = new google.auth.JWT(
        googleKey.client_email,
        null,
        googleKey.private_key, scopes,
        null
    );
        jwtClient.authorize(function jwtAuth(err, tokens) {
            if (err) {
                res.json({ error: "Failed to execute auth command " });
                return;
            }

            let calendar = google.calendar('v3');
            calendar.calendarList.list({
                auth: jwtClient
            }, function(err, resp) {
                if (err || !resp.items) {
                    res.json({ error: "Failed to execute calendar list request " });
                    return;
                }
                let calendars = resp.items.map(cal => { if (cal.summary) return { id: cal.id, txt: cal.summary } });
                res.json(calendars);
            });
        });
    }

因此,上面的代码在具有启用的日历api的帐户中对日历列表进行了jwt授权调用。我甚至可以看到当我进入我的控制台时发出的成功请求,但是我从nodejs获得的结果是一个空数组,就好像我在api资源管理器中测试它我得到了正确的结果..最新情况怎么样?

1 个答案:

答案 0 :(得分:1)

这是一个一年的问题,但也许其他人从答案中受益。您应该在代码中使用“数据”而不是“项目”。这是一个有效的例子:

async function listCalendars() {
  // console.log( calendar.calendarList);
  calendar.calendarList.list({
      auth: oauth2Client,
      maxResults: 100
    },
    function (err, result) {
      console.log(result.data.items);
    }
  );
}

listCalendars().catch(console.error);