2017-05-09 6 views
1

correspond pas à attendre que j'ai lancé une application Heroku en utilisant les fichiers suivants: -Fb développeur problème - 'URL n'a pas pu être validé. Réponse ne conteste »

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 

J'ai installé les dépendances Node.js à l'aide de la commande: npm install express request body-parser --save

Après git push heroku master, l'application lance correctement. Toutefois, lors de la tentative de configuration d'un webhook dans fb developer, l'erreur est "URL impossible à valider". La réponse ne correspond pas au défi attendu », puis donne les différentes réponses au défi. C'est-à-dire, mon URL répond avec "Bonjour le monde, j'ai l'air de travailler" au lieu de la clé numérique.

J'apprécierais grandement votre aide!

+0

Eh bien, cela semble que vous n'avez pas spécifié l'URL correcte pour le webhook ... – CBroe

Répondre

2

Vous devez pointer FB vers la route qui possède la fonction de vérification. Vous pointez actuellement FB vers l'index racine du site '/' il semble.

Modifiez l'URL du webhook FB dans les paramètres de l'application sur https://YOUR_DOMAIN.com/webhook et la vérification sera terminée. FB enverra alors tous les événements auxquels vous êtes abonné à votre route '/webhook'.

Si cela ne fonctionne pas, notez que vous avez hardcoded votre jeton vérifier ici test-token:

... 

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

Cela ne compléter le défi si 'test-token' est ce que vous définissez votre jeton de vérification de webhook à. Une meilleure façon de le faire serait imo les suivantes:

... 

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

Dans l'exemple ci-dessus, vous devez passer dans le jeton que vous choisissez pour vérifier votre webhook lors de l'exécution de votre serveur, avant d'essayer de vérifier la webhook.

Dans votre tableau de bord héroku, ajoutez VERIFY_TOKEN avec votre jeton comme valeur à vos variables de configuration. Cela rendra le jeton de vérification disponible sans codage en dur.

+0

Merci - cela fonctionne! Simplement ajouté/webhook à l'url. Votre aide a été très appréciée. – Piallen