Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何解决freebusy google calendar nodejs api的故障?_Node.js_Google Calendar Api - Fatal编程技术网

Node.js 如何解决freebusy google calendar nodejs api的故障?

Node.js 如何解决freebusy google calendar nodejs api的故障?,node.js,google-calendar-api,Node.js,Google Calendar Api,我正在尝试使用这里列出的nodejsapi从googlecalendar获取忙/闲信息。问题是我得到的唯一错误响应是“无效请求”。当我用谷歌的试用工具运行它时,我能够得到响应。我知道我有一个授权客户。如何进一步排除故障 function getAvail(auth, dateTimeRange, calID) { var deferred = Q.defer(); // get a new deferral calendar.freebusy.query({

我正在尝试使用这里列出的nodejsapi从googlecalendar获取忙/闲信息。问题是我得到的唯一错误响应是“无效请求”。当我用谷歌的试用工具运行它时,我能够得到响应。我知道我有一个授权客户。如何进一步排除故障

function getAvail(auth, dateTimeRange, calID) {
    var deferred = Q.defer(); // get a new deferral
    calendar.freebusy.query({
            auth: auth,
            items: [{id: calID}],
            timeMin: (dateTimeRange.start).toISOString(),
            timeMax: (dateTimeRange.end).toISOString(),
            }, function(err, response) {
                    console.log('Response from the Calendar service: ' + response);
                    if (err) {
                            console.log('There was an error contacting the Calendar service: ' + err);
                            deferred.reject(); // deferred reject here
                            return;
                    }   
                    var events = response[calID]['busy'];
                    if (events.length == 0) {
                            console.log('No upcoming events found.');
                    } else {
                            console.log('busy in here...');
                    }   
                    deferred.resolve(response); // deferred resolve here
            }); 
    return deferred.promise; // return a promise

}呸!我终于明白我做错了什么。下面是我犯错误的注释代码。我希望有更好的方法来发现这个问题

function getAvail(auth, dateTimeRange, calID) {
    console.log('auth:'+JSON.stringify(auth));
    console.log('date Time Range :'+(dateTimeRange.start).toISOString()+' --->'+(dateTimeRange.end).toISOString());
    console.log('calendar id to check freebusy:'+calID);
    var deferred = Q.defer(); // get a new deferral
    calendar.freebusy.query({
            auth: auth,
            headers: { "content-type" : "application/json" },
            resource:{items: [{"id" : calID}],   //needed to include resource instead of sending the params directly.

                      timeMin: (dateTimeRange.start).toISOString(),
                      timeMax: (dateTimeRange.end).toISOString()
                    }   
    }, function(err, response) {
                    console.log('Response from the Calendar service: ' + JSON.stringify(response));
                    if (err) {
                            console.log('There was an error contacting the Calendar service: ' + err);
                            deferred.reject(); // deferred reject here
                            return;
                    }   
                    var events = response.calendars[calID].busy;
                    if (events.length == 0) {
                            console.log('No upcoming events found.');
                    } else {
                            console.log('busy in here...');
                    }   
                    deferred.resolve(response); // deferred resolve here
            }); 
    return deferred.promise; // return a promise
}
这是一个冥想和密切注视着文件很多。谷歌的nodejs库还没有很好的示例文档(好吧,它仍然是alpha)。但以下是freebusy的功能:

this.freebusy = {

    /**
     * calendar.freebusy.query
     *
     * @desc Returns free/busy information for a set of calendars.
     *
     * @alias calendar.freebusy.query
     * @memberOf! calendar(v3)
     *
     * @param  {object} params - Parameters for request
     * @param  {object} params.resource - Request body data** <<<< -- this is what I was missing.
     * @param  {callback} callback - The callback that handles the response.
     * @return {object} Request object
     */
    query: function(params, callback) {
      var parameters = {
        options: {
          url: 'https://www.googleapis.com/calendar/v3/freeBusy',
          method: 'POST'
        },
        params: params,
        requiredParams: [],
        pathParams: [],
        context: self
      };

      return createAPIRequest(parameters, callback);
    }

};
this.freebusy={
/**
*calendar.freebusy.query
*
*@desc返回一组日历的忙/闲信息。
*
*@alias calendar.freebusy.query
*@memberOf!日历(v3)
*
*@param{object}params-请求的参数

*@param{object}params.resource-请求正文数据**我自己一直在努力解决这个问题。谢谢你的帖子,这帮我摆脱了困境!谢谢你。看来这只会获取公共日历的忙/闲信息,对吧?有人知道如何获取非公共日历的忙/闲信息吗?