处理 gapi.client.calendar.events.list 的未捕获错误

Handle uncaught error for gapi.client.calendar.events.list

我只是想问一下是否有办法捕获错误或知道用户无法从日历中获取事件?我想要做的是添加注意当前登录电子邮件没有访问事件的权限。一切正常,授权电子邮件可以访问事件。谢谢你的帮助。

这是我的代码:

 gapi.client.calendar.events.list({
      'calendarId': calendarid,
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'maxResults': 10,
      'orderBy': 'startTime'
    }).then(function(response) { 
      var events = response.result.items;
      //appendPre('Upcoming events:');

      if (events.length > 0) {
        for (i = 0; i < events.length; i++) {
          var event = events[i];
          var when = event.start.dateTime;
          if (!when) {
            when = event.start.date;
          }
          //listingdata.push(event.summary+'('+when +'\n'+ event.description);

           //appendPre(event.summary + ' (' + when + ') ' + event.description)
        }
      } else {
         //appendPre('No upcoming events found.');
      }

    });

每个 Google API 都必须 return 代码 403(禁止访问),当您尝试访问不允许访问的资源时。

所以,您只需要捕获 http 响应代码即可:

 gapi.client.calendar.events.list({
      'calendarId': calendarid,
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'maxResults': 10,
      'orderBy': 'startTime'
    }).then(function(response) { 
      var events = response.result.items;
      //appendPre('Upcoming events:');

      if (events.length > 0) {
        for (i = 0; i < events.length; i++) {
          var event = events[i];
          var when = event.start.dateTime;
          if (!when) {
            when = event.start.date;
          }
          //listingdata.push(event.summary+'('+when +'\n'+ event.description);

           //appendPre(event.summary + ' (' + when + ') ' + event.description)
        }
      } else {
         //appendPre('No upcoming events found.');
      }

    }, function(error) {
          console.error("Execute error", error);
          if(error.code == 403)
          {
            console.log("No access")
          }

        });