Ответ 1
Вы можете использовать cloudflare, чтобы получить https вместо самоподписывания. Или вы можете использовать https://letsencrypt.org
Наконец, 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.
Вы можете использовать cloudflare, чтобы получить https вместо самоподписывания. Или вы можете использовать https://letsencrypt.org
Для просто теста вы можете использовать localtunnel. https://localtunnel.me/
Я развернул мой бот в Heroku, и они с готовностью предлагают HTTPS-соединения. Для локального развития я использую ngrok
, который также поддерживает пересылку HTTPS.
Для новых пользователей я написал этот небольшой учебник для тех, кто хочет начать работу с API Facebook Messenger (Bot), начиная с первой строки кода до Heroku развертывание. Я узнал, что Heroku идеально подходит для такого проекта, так как я использовал Python flask
+ gunicorn
, все, что мне нужно для развертывания, заняло всего 5 минут, и Heroku позаботился об остальном.
Извлечен из здесь:
Новые подписки на веб-хосты должны использовать безопасный URL-адрес обратного вызова HTTPS по версии v2.5. Со следующей версией API-интерфейса графика мы прекратим отправку обновлений на URL-адреса обратного вызова, отличные от HTTPS.
Если вам нужна дополнительная информация о настройке HTTPS для URL-адреса обратного вызова, ознакомьтесь с руководством по началу работы от Let 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.