Node.js - API Календаря Google показывает ошибку «Отсутствует время окончания» при вставке события - PullRequest
0 голосов
/ 28 июня 2018

Я использую библиотеку Календаря Google для Node.js, чтобы получить идентификатор календаря и список событий из API. Это работает, как ожидалось. Но когда я пытаюсь вставить или изменить событие, я сталкиваюсь с распространенным (!) Сообщением об ошибке «Отсутствует время окончания».

Я пытаюсь отправить POST-запрос, используя Запрос - упрощенный HTTP-клиент и не используя библиотеку Google или другой пакет.

Вот мой фрагмент кода:

const request = require('request');

// Update Event Title
function insertEventIntoCalendar(calendarId,accessToken){

  let endDateTime = {
        dateTime: '2018-07-03T10:25:00.000-07:00',//end,
        timeZone: 'Asia/Dhaka'
    },
    startDateTime = {
        dateTime: '2018-07-03T10:00:00.000-07:00', //start,
        timeZone: 'Asia/Dhaka'
    },
    url = "https://www.googleapis.com/calendar/v3/calendars/primary/events?access_token="+accessToken,
    options = {
        data: {
            end: endDateTime,
            start: startDateTime,
            summery: 'ARG will win',
            location: '800 Howard St., San Francisco, CA 94103',
            attendees: [],
            reminders: {
                useDefault: true,
            }
        },
        headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + accessToken,
            'Accept': 'application/json'
        },
        calendarId: 'primary'
    }

  request.post(url, options, function (err, res, body) {
     console.log('err =>', err);
     console.log('body =>', body);
  })
}

А вот мое сообщение console.log:

err => null
body => {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Missing end time."
   }
  ],
  "code": 400,
  "message": "Missing end time."
 }
}

Примечание: Я следил за всеми вопросами и ответами, связанными с Google Calendar API и Node.js, и все еще сталкиваюсь с той же ошибкой. И я не нашел ответов, где не используется библиотека Google.

Пожалуйста, поделитесь своими мыслями, если вы попробовали этот способ, иначе вы можете предложить мне лучший способ, где мне не нужен файл Config для получения или изменения информации Календаря Google.

1 Ответ

0 голосов
/ 28 июня 2018

Проблема заключается в объявлении переменной options . В документации Запрос - упрощенный HTTP-клиент говорится, что данные json тела запроса должны называться «json». Таким образом, переменная options должна быть,

options = {
        url: url
        json: {
            end: endDateTime,
            start: startDateTime,
            summery: 'ARG will win',
            location: '800 Howard St., San Francisco, CA 94103',
            attendees: [],
            reminders: {
                useDefault: true,
            }
        }
    }

и для отправки запроса POST, код должен быть:

request.post(options,function (err, res, body) {
        console.log('err =>', err);
        // console.log("res =>", res);
        console.log("body =>", body);
    })

Я попробовал этот способ, и он работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...