Fb вопрос разработчика - «URL не может быть подтвержден. Ответ не соответствует ожидаемому вызову»

голоса
1

Я запустил приложение Heroku, используя следующие файлы: -

app.js

'use strict'

const express = require('express')
const bodyParser = require('body-parser')
const request = require('request')
const app = express()

app.set('port', (process.env.PORT || 5000))

// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}))

// Process application/json
app.use(bodyParser.json())

// Index route
app.get('/', function (req, res) {
    res.send(Hello world, I seem to be working)

})

// for Facebook verification
app.get('/webhook', function (req, res) {
    if (req.query['hub.verify_token'] === 'test-token') {
      res.send(req.query['hub.challenge']);
   } else {
      res.send('Error, wrong validation token');    
   }
})

// Spin up the server
app.listen(app.get('port'), function() {
    console.log('running on port', app.get('port'))
})

.gitignore

node_modules

package.json

{
  name: heroku-node-practice,
  version: 1.0.0,
  description: New bot,
  main: app.js,
  scripts: {
    test: echo \Error: no test specified\ && exit 1,
    start: node app.js
  },
  author: Paigal,
  license: ISC,
  dependencies: {
    body-parser: ^1.17.1,
    express: ^4.15.2,
    foobar: ^1.1.0,
    mongoose: ^4.9.8,
    request: ^2.81.0
  }
}

PROCFILE

web: node app.js

Я установил Node.js зависимости с помощью команды: npm install express request body-parser --save

После того, как git push heroku masterприложение запускается правильно.

Однако, при попытке создать webhook в фбе разработчика, ошибка «URL не может быть подтвержден. Ответ не соответствует ожидаемому вызову», то дает разные ответы на этот вызов. То есть, мой URL отвечает «Привет мир, я, кажется, работает» вместо числового ключа.

Будет очень ценю вашу помощь!

Задан 09/05/2017 в 21:59
источник пользователем
На других языках...                            


1 ответов

голоса
2

Вы должны указать FB на маршрут , который имеет функцию проверки в нем. Вы в настоящее время указывает FB на индекс корневой сайт '/'кажется.

Изменение webhook URL FB в настройках приложения , чтобы https://YOUR_DOMAIN.com/webhookи проверка будет завершена. FB вышлет любые события , которые вы подписаться на ваш '/webhook'маршрут.

Если это не работает, обратите внимание , вы жёстко ваш проверить маркер здесь test-token:

...

if (req.query['hub.verify_token'] === 'test-token') { ...

Это завершит только вызов , если 'test-token'это то , что вы установите маркер проверки webhook в. Лучший способ сделать это имо будет следующим:

...

if (req.query['hub.verify_token'] === process.env.VERIFY_TOKEN ) { ...

В приведенном выше примере вы должны передать в проверить маркер вы выбираете для вашего webhook при запуске сервера, прежде чем пытаться проверить webhook.

В вашем Heroku приборной панели, добавьте VERIFY_TOKENс маркером в качестве значения для вашей переменной конфигурации. Это заставит проверить маркер доступен без жесткого кодирования.

Ответил 10/05/2017 в 18:29
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more