Подтвердить что ты не робот

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

Наконец, Facebook запустил API для своего Messenger API для своего мессенджера. Это позволит нам создавать чаты.

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

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

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 нажимаю кнопку Verify and Save.

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

Снимок экрана

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

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

Нужно ли использовать SSL-сертификаты только для центров сертификации для работы с facebook messenger?

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ngrok

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

Ответ 4

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

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

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

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

Ответ 5

Чтобы проверить использование сетевого крючка: -

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

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

echo $_REQUEST["hub_challenge"];
exit;

Ответ 6

У меня была такая же ошибка с использованием 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.