Платформа Facebook Messenger. Настройка webhook с помощью SSL

наконец Facebook запустил API для своего мессенджера API для их посланником. Это позволит нам создавать чат-ботов.

в руководстве по началу работы, мне нужно настроить webhook. Для этого требуется веб-сервер, который находится в определенном домене и должен использовать SSL-соединение.

У меня есть VPS, который имеет статический IP. Я сделал самозаверяющий сертификат и создал простой веб-сервер узла JS, который использует этот сертификат. Прежде всего, мне нужно проверить токен для веб-перехватчик:

app.get('/webhook/', function (req, res) {
  if (req.query['hub.verify_token'] === '<validation_token>') {
      res.send(req.query['hub.challenge']);
  }
  res.send('Error, wrong validation token');
})

затем я запустил это серверное приложение, и в моей панели приложений facebook я нажимаю на проверить и сохранить.

Он выдает мне это сообщение об ошибке:

Screenshot

Это означает, что Facebook не хочет принимать мой самоподписанный сертификат.

Это вызывает несколько вопросов:

Мне нужно использовать SSL-сертификаты только при условии Центры Сертификации для того, чтобы работать с Facebook messenger?

работа с Facebook messenger намного сложнее, чем Telegram.

6 ответов


можно использовать cloudflare чтобы получить https вместо самописца. Или вы можете использовать https://letsencrypt.org


для просто теста вы можете использовать localtunnel. https://localtunnel.me/


я развернул мой бот к Heroku, и они охотно предлагают соединения HTTPS. Для местного развития я использую ngrok, который также поддерживает пересылку HTTPS.

Ngrok

для новичков, я написал в этом небольшом уроке для тех, кто хочет начать работу с API Facebook Messenger (Bot), от первой строки кода до развертывания Heroku. Я узнал, что Heroku идеально подходит для такого проекта, так как я использовал Питон flask + gunicorn, все, что мне нужно для развертывания, действительно заняло 5 минут, и Heroku позаботился об остальном.


извлеченные из здесь:

новые подписки webhook должны использовать безопасный URL обратного вызова HTTPS с версии v2.5. Со следующей версией Graph API мы прекратим отправлять обновления URL-адресам обратного вызова без HTTPS.
Если вам нужна дополнительная информация о настройке HTTPS для URL обратного вызова, ознакомьтесь с руководством по началу работы из Let's Encrypt и инструкциями по установке SSL-сертификата из Digicert.

и от здесь, и как @saturngod сказал:

самозаверяющие сертификаты не будут приняты facebook. Letsencrypt сертификаты отлично работает.


для проверки использования веб-крючка: -

$_REQUEST["hub_token"] and $_REQUEST["hub_challenge"];

сначала проверьте токен на маркер страницы, а затем распечатайте : -

echo $_REQUEST["hub_challenge"];
exit;

У меня была такая же ошибка с использованием Comodo SSL на Apache. В моем случае мне не хватало SSLCertificateChainFile и просто нужно было загрузить этот файл пакета и путь к файлу в моей конфигурации виртуального хоста и перезагрузить apache. Вот ссылка для установки Comodo SSL, купленного у ssls.com https://helpdesk.ssls.com/hc/en-us/articles/203482651-How-to-install-a-SSL-certificate-on-Apache.