API Календаря Google - Push-уведомления не работают - PullRequest
7 голосов
/ 01 апреля 2019

Я использую API Календаря Google и пытаюсь получать push-уведомления при запуске события календаря https://developers.google.com/calendar/v3/push

Я думаю, что все настроено правильно ...

gapi.client.calendar.events.watch({
  calendarId: 'primary',
  resource: {
    id: uuid,
    type: 'web_hook',
    address: window.location.href,
  },
}, (err, response) => {
  if (err) {
    console.log('err:', err);
  } else {
    console.log('response:', response);
  }
}).then((res) => {
  console.log('res:', res);
});

Но я думаю, нет.Я получаю ответ 200, когда звоню по указанному выше коду

{
 "kind": "api#channel",
 "id": "...",
 "resourceId": "...",
 "resourceUri": "https://content.googleapis.com/calendar/v3/calendars/primary/events?alt=json&maxResults=250&alt=json",
 "expiration": "1554203159000"
}

. Мне кажется, я также должен получить сообщение синхронизации, но я не получаю (https://developers.google.com/calendar/v3/push#sync)

.изменение события внутри самого календаря (изменение заголовка, даты, удаление и т. д.), и я ожидаю, что что-то произойдет в моем браузере, но ничего.

Я не знаком с Push-уведомлениями в целом, поэтомуне совсем уверен, чего ожидать.

Я уже аутентифицирован и отображаю события согласно https://developers.google.com/calendar/quickstart/js

Чего мне не хватает? Любая помощь очень ценится!

Спасибозаранее!

1 Ответ

3 голосов
/ 01 апреля 2019

Я подозреваю, что вы не понимаете, что такое push-уведомления.

Существует два основных способа отслеживания изменения ресурса.Вы можете часто опрашивать этот ресурс и проверять наличие изменений в ресурсе.

Например, Ваше приложение может запускаться каждые пять минут и отправлять запрос в Google с просьбой вернуть вам событие.Когда это событие будет возвращено, вы проверите, есть ли какие-либо изменения в событии, созданном пользователем.Этот метод проверки изменений занимает много времени и требует ресурсов для постоянного опроса сервера в поисках изменений.Лучшим способом сделать это является использование Push-уведомлений

Push-уведомлений , уведомляющих ваше приложение о внесении изменений.

В этом документе описывается, как использовать push-уведомления, которые информируют ваше приложение об изменении ресурса .

Настройка осуществляется путем включения наблюдения

POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json

{
  "id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
  "type": "web_hook",
  "address": "https:/examle.com/notifications", // Your receiving URL.
  ...
  "token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
  "expiration": 1426325213000 // (Optional) Your requested channel expiration time.
}

Это сообщает серверам Googles, что вы хотели бы получать уведомления, когда кто-либо вносит изменения в событие.Это настраивает веб-хук на https: /examle.com/notifications, который будет уведомлен, как только произойдет изменение в событии.

Название события, дата и время обычно меняются, я не думаю, что вы получите push-уведомление, если кто-то еще будет добавлен к событию.

Чем это не является

Сервер НЕ собирается отправлять вам сообщение за 10 минут до наступления события.Это уведомление пользователя и что-то совершенно другое, не входящее в API Календаря Google.

...