Push-уведомления Календаря Google: правильная проверка домена и регистрация, но не удается получать уведомления

1

Я столкнулся с проблемой с уведомлениями Google Calendar Push. Сначала я хотел бы объяснить свой сценарий.

Я пытаюсь разработать приложение java для интеграции в платформу, которая обрабатывает датчики и исполнительные механизмы. Цель этого приложения - использовать API календаря Google и Push Notifications для отслеживания определенных событий. Моя первая "архитектура", которую я выбрал, следующая: я открыт для предложений и критики, учитывая мой молодой опыт как разработчика ;-):

  1. Простой Tomcat Servlet, который станет последним веб-сайтом для Google Servers (A);
  2. Класс java, который реализует простой сервер-клиент Socket (B);
  3. Класс java, который использует API календаря Google и получает push-сообщения одним из своих методов (C);

Логика (возможно, не столь эффективная) за этой структурой заключается в том, что серверы Google отправляют уведомления на мой веб-сайт Tomcat, который в то же время является клиентом моего канала Socket. Когда он получает нажатие, он выполняет свою работу и предупреждает о Socket Server. Последний, благодаря статическому объекту, вызывает метод C. Этот класс будет использовать API Google, чтобы проверить, что произошло.

Первый и обязательный ресурс для изучения: https://developers.google.com/google-apps/calendar/v3/push

Я смог выполнить Шаг 1. Убедитесь, что вы владеете доменом с помощью Инструментов для веб-мастеров и правильно добавляете мой домен для push-уведомлений, как указано в шаге 2: Зарегистрируйте свой домен. Эти два шага приводят меня к моему первому вопросу:

Проверяет ли Google, имеют ли перечисленные домены действительные SSL-сертификаты в течение этих двух шагов?

Мой домен - это что-то вроде "domain.com", и полный URL-адрес для доступа к веб-узлу - hhttps://ab.domain.com/app/notifications. В документации Google очень важно отметить:

Обратите внимание, что API Календаря Google сможет отправлять уведомления на этот> HTTPS-адрес только в том случае, если на вашем веб-сервере установлен действительный сертификат SSL. Недопустимые сертификаты:

  • Самоподписанные сертификаты.
  • Сертификаты, подписанные ненадежным источником.
  • Сертификаты, которые были отозваны.
  • Сертификаты, у которых есть объект, который не соответствует целевому имени хоста.

Во-первых, я настроил Tomcat для включения SSL и HTTPS после официальной документации: tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html. Теперь я могу получить доступ к tomcat и моему сервлету через https.

Проблема в том, что я не могу получить "правильные" push-уведомления. Используя плагин браузера для имитации запроса Http/Https, я могу легко получить доступ к веб-узлу Tomcat, и он правильно предупреждает мое приложение Java. Поэтому, поскольку я почти исключаю проблемы с каналом Socket, я сосредоточен на связи между серверами Google и моим веб-узлом Tomcat. Я использую Wireshark для просмотра входящего трафика из Google через порт 8443 (https для Tomcat). Очевидно, что зашифрован, поэтому я не могу проверить много, но многие пакеты отмечены как PSH (push). Однако они, похоже, имеют полезную нагрузку, которая, согласно документу Google, не должна, потому что push-уведомления - это всего лишь пакеты с информацией о заголовках.

Поэтому мое первое сомнение касается сертификата. У меня его нет, поэтому я использую этот пробный вариант от Verisign.com (который, кстати, предлагается в документации Tomcat для включения SSL)

Самое второе сомнение касается процедуры проверки и регистрации. Несмотря на то, что мне удалось это сделать, и Google принимает домен ab.domain.com/app/notifications как webhook, у меня нет инструментов, чтобы доказать, что все правильно.

Я нашел следующее сообщение в Stackoverflow: "Не удалось получить push-уведомление для календаря Google", "Уведомление о нажатии календаря на сервер Java-сервера", "Наблюдательная команда Google Calendar Push Notification". Я уже проверил ответы разных сторон и предложений и ничего не изменилось.

Что мне не хватает? Большое спасибо, я был бы благодарен за любой отзыв, подсказку, ответ, указатель :-)

  • 0
    Когда вы отправляете запрос на просмотр, вы получили ответ с кодом состояния HTTP 200 ok? что указывает на то, что канал уведомления установлен правильно.
  • 0
    Привет SGC. Спасибо за ваш комментарий, я забыл упомянуть об этом. Да, когда я отправляю запрос на просмотр, я всегда получаю правильный статусный ответ с HTTP 200
Показать ещё 1 комментарий
Теги:
servlets
tomcat
push-notification
google-calendar

2 ответа

0

Вам понадобится действительный SSL-сертификат. Самоподписанные не допускаются.

0

Если вы пытаетесь отлаживать веб-хоккей, либо для механики (т.е. правильной настройки на стороне отправителя), либо для правильности (для проверки почтовой полезной нагрузки), попробуйте использовать RequestBin. Если возможно, зарегистрируйте URL-адрес RequestBin вместе с вашим целевым URL-адресом. RequestBin даст вам полную информацию о том, что представляет собой полезная нагрузка, а также дайте заверения в том, что вы правильно настроили на стороне отправителя (Google).

  • 1
    Это не сработает, вам нужно владеть доменом (и доказать это с помощью инструментов для веб-мастеров), чтобы иметь возможность получать push-уведомления. Действительно должно быть возможно использовать сторонние сервисы во время разработки / тестирования, но это сейчас невозможно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню