Fb developer kwestie - 'URL kan niet worden gevalideerd. Reactie komt niet overeen met verwachte uitdaging'

stemmen
1

Ik heb een Heroku applicatie gelanceerd met behulp van de volgende bestanden: -

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

Ik installeerde node.js afhankelijkheden met het commando: npm install express request body-parser --save

Na git push heroku masterde toepassing lanceert correct.

Echter, wanneer het proberen om het opzetten van een webhook in fb ontwikkelaar, is de fout 'URL kan niet worden gevalideerd. Reactie komt niet overeen met verwachte uitdaging', dan geeft de verschillende reacties op de uitdaging. Dat wil zeggen, mijn URL antwoordt met Hallo wereld, ik lijken te werken in plaats van de numerieke toets.

Zou het zeer waarderen uw hulp!

De vraag is gesteld op 09/05/2017 om 21:59
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

Je moet om te wijzen FB om de route die het controleren functie binnen het heeft. Je bent momenteel wijzen FB naar de site wortel index '/'lijkt het.

Verander de FB webhook url in de app instellingen https://YOUR_DOMAIN.com/webhooken de verificatie zal worden voltooid. FB stuurt vervolgens welke gebeurtenissen u zich abonneren op uw '/webhook'route.

Als dit niet werkt, merk je hebt hardcoded uw controleren token hier test-token:

...

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

Dit zal alleen voltooien de uitdaging als 'test-token'is wat u uw webhook verificatie-code ingesteld op. Een betere manier om dit imo te doen zou de volgende zijn:

...

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

In het bovenstaande voorbeeld moet u nu in het controleren token u kiest voor uw webhook bij het uitvoeren van uw server, voordat u probeert de webhook controleren.

In je Heroku dashboard, toe te voegen VERIFY_TOKENmet uw token als de waarde aan uw config variabelen. Dit maakt het controleren token verkrijgbaar zonder hardcoding.

antwoordde op 10/05/2017 om 18:29
bron van user

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