часы календаря google API не работают, но канал создан

Я пытаюсь прослушать события изменения моего календаря (google-apps/calendar /v3/reference/events/watch).

Я сделал все со стороны консоли Google, домены - ОК, все проверено, и мне удалось создать канал. Также мне удалось получить сообщение sync с правильными заголовками (см. ниже). Из документов:

Синхронизировать сообщение

После создания нового канала уведомлений для просмотра ресурса API Календаря Google отправляет сообщение синхронизации, чтобы указать, что уведомления начинаются. Значение HTTP-заголовка X-Goog-Resource-State для этих сообщений — sync. Из-за проблем с синхронизацией сети можно получить сообщение синхронизации даже до того, как вы получите ответ метода наблюдения.

Это означает, что notifications are starting

Однако, когда я что-то меняю в аккаунте [email protected] - ничего не происходит, запрос на обратный вызов не отправляется : 'https://dev-api.mycompany/google-watch/'

Это мой рабочий код:

var google = require('googleapis');
var googleAuth = require('google-auth-library');
var _ = require('underscore-node');


var uuid = require('node-uuid');

  // ......

                     var channel_id = uuid.v1();


                        _auth.credentials = {
                            access_token: _token.access_token,
                            token_type: _token.token_type,
                            refresh_token: _token.refresh_token,
                            expiry_date: _token.expiry_date
                        };

                        var data = {
                            auth: _auth,
                            calendarId: _token.provider_email, 
                            singleEvents: true,
                            orderBy: 'startTime',
                            resource: {
                                id: channel_id,
                                token: 'email='+_token.provider_email,
                                address: 'https://dev-api.mycompany/google-watch/',
                                type: 'web_hook',
                                params: {
                                    ttl: '36000'
                                }
                            }

                        };

                        calendar.events.watch(data, function (err, response) {
                            if (err) {
                                console.error('The API returned an error: ' + err);
                                 return;
                            }
                        });

Когда я запускаю вышеупомянутые фрагменты кода, я получаю ответ:

{
  "kind": "api#channel",
  "id": "277fa000-d4b6-12e5-ab58-e7afaf85ea65",
  "resourceId": "C7vFL07CYfqaHy3vDss4qugWDfk",
  "resourceUri": "https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?orderBy=START_TIME&singleEvents=true&alt=json",
  "token": "[email protected]",
  "expiration": "1455667451000"
}

И в 'https://dev-api.mycompany/google-watch/' URL-адресе я получаю sync сообщение о документах, например (см. google-apps/ календарь/v3/push):

{
  "host": "dev-api.mycompany",
  "accept": "*/*",
  "accept-encoding": "gzip,deflate",
  "user-agent": "APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)",
  "x-goog-channel-expiration": "Tue, 16 Feb 2016 22:44:51 GMT",
  "x-goog-channel-id": "277fa000-d4b6-12e5-ab58-e7afaf85ea65",
  "x-goog-channel-token": "[email protected]",
  "x-goog-message-number": "1",
  "x-goog-resource-id": "C7vFL07CYfqaHy3vDss4qugWDfk",
  "x-goog-resource-state": "sync",
  "x-goog-resource-uri": "https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?orderBy=START_TIME&singleEvents=true&alt=json",
  "x-forwarded-for": "56.102.7.132",
  "x-forwarded-port": "443",
  "x-forwarded-proto": "https",
  "content-length": "0",
  "connection": "keep-alive"
}

но не exists сообщение

Я что-то пропустил?

пожалуйста помоги,


person snaggs    schedule 16.02.2016    source источник


Ответы (1)


Мы используем Push-уведомления уже несколько лет и заметили, что за последние 24 часа мы не получили никаких уведомлений по нескольким тысячам календарей.

Как и вы, мы можем создать/остановить канал, но уведомления об изменениях не приходят, как обычно.

Примерно час назад мы получаем их снова. Пожалуйста, повторите попытку на своем канале, так как это может быть проблема со стороны Google Push, которая уже устранена.

person PNC    schedule 16.02.2016
comment
был сбой @ Google. Как правило, это очень надежно. Вам нужно создать некоторый опрос для изменений в вашем приложении, чтобы удовлетворить сценарий, в котором PUSH терпит неудачу. - person PNC; 20.02.2016