drive.changes.watch не отправляет уведомления

Я использую пакет googleapis npm ("apis/drive/v3.js") для службы Google Диск. На сервере я использую NodeJS и ngrok для локального тестирования. Моя проблема в том, что я не могу получать уведомления. Следующий код:

    drive.changes.watch({
        pageToken: startPageToken,
        resource: {
            id: uuid.v1(),
            type: 'web_hook',
            address: 'https://7def94f6.ngrok.io/notifications'
        }
    }, function(err, result) {
        console.log(result)
    });

возвращает что-то вроде:

{
    kind: 'api#channel',
    id: '8c9d74f0-fe7b-11e5-a764-fd0d7465593e',
    resourceId: '9amJTbMCYabCkFvn8ssPrtzWvAM',
    resourceUri: 'https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=6051&restrictToMyDrive=false&spaces=drive&alt=json',
    expiration: '1460227829000'
}

Когда я пытаюсь изменить какие-либо файлы в Google Диске, уведомления не приходят. Уважаемые коллеги, что не так?


person Community    schedule 09.04.2016    source источник
comment
Вы зарегистрировались и подтвердили 7def94f6.ngrok.io в Google? См. эту страницу: developers.google.com/drive/v3/web/push#. обзор   -  person jdobry    schedule 09.04.2016
comment
Да! Но когда я пытаюсь передать параметры здесь: developers.google. com/drive/v3/reference/changes/watch#try-it Я получил эту ошибку: { ошибка: { ошибки: [ {домен: глобальный, причина: push.webhookUrlUnauthorized, сообщение: неавторизованный канал обратного вызова WebHook: 7def94f6.ngrok.io/notifications } ], код: 401, сообщение: Неавторизованный канал обратного вызова WebHook: 7def94f6.ngrok.io/notifications } }   -  person    schedule 09.04.2016


Ответы (1)


Это должен быть комментарий, но у меня недостаточно опыта (50 баллов), чтобы опубликовать его. Извините, если это не настоящий ответ, но может помочь.

Я узнал об этом сегодня. Я делаю практически то же самое, что и вы, только не с Drive, а с Gmail api. Я вижу, у вас есть эта ошибка:

"push.webhookUrlUnauthorized", "message": "Несанкционированный веб-перехватчик и т. д...."

Я думаю, что это потому, что одна из 2 причин:

  1. вы не предоставили разрешения издателя Drive-api на свою тему.

  2. Во-вторых, если вы хотите получать уведомления, авторизованный URL-адрес webHooks должен быть установлен как на сервере (ваш проект), так и в вашей службе публикации/подписки (Google Cloud).

См. ниже - для меня эта установка работает:

1. Create a topic

1. Создайте тему

 2. Give the Drive publish permissions to your topic. This is done by adding the Drive scope in the box and following steps 2 and 3.

2. Разрешите издателю Диска доступ к вашей теме

3. Configure authorized WebHooks. Form the Create Topic page - click on add subscriptions. Not rely vizible here but once you are there you can manage.

3. Настройте авторизованные веб-перехватчики

person AIon    schedule 12.04.2016
comment
Спасибо, Алон за столь подробное описание. Я следую вашему руководству, но у меня такая же проблема. Недавно здесь был создан новый вопрос (stackoverflow.com /вопросы/36528336/) - person ; 12.04.2016