2017-05-09 1 views
1

ich eine Heroku Anwendung gestartet haben mit den folgenden Dateien: -Fb Entwickler Problem - 'URL konnte nicht validiert werden. Antwort entspricht nicht erwartete Herausforderung‘

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 

installiert ich node.js Abhängigkeiten mit dem Befehl: npm install express request body-parser --save

Nach git push heroku master die Anwendung richtig startet.

Allerdings, wenn Sie versuchen, einen Webhook in fb-Entwickler einzurichten, ist der Fehler 'URL konnte nicht überprüft werden. Die Antwort stimmt nicht mit der erwarteten Herausforderung überein "gibt dann die verschiedenen Antworten auf die Herausforderung. Das heißt, meine URL antwortet mit "Hallo Welt, ich scheine zu arbeiten" anstelle des numerischen Schlüssels.

Würde ich sehr Ihre Hilfe zu schätzen wissen!

+0

Nun, das klingt wie Sie nicht die richtige URL für den Webhook ... – CBroe

Antwort

2

Sie müssen FB auf die Route verweisen, die die Verify-Funktion enthält. Sie verweisen FB derzeit auf den Site-Root-Index '/'.

Ändern Sie die FB Webhook-URL in den App-Einstellungen auf https://YOUR_DOMAIN.com/webhook und die Überprüfung ist abgeschlossen. Der FB sendet dann alle von Ihnen abonnierten Ereignisse an Ihre Route '/webhook'.

Wenn dies nicht funktioniert, bemerken Sie Ihre Token hier als test-token fest einprogrammiert überprüfen:

... 

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

Dies wird nur die Herausforderung abzuschließen, wenn 'test-token' ist, was Sie Ihre Webhook Ãœberprüfungscode einzustellen.

... 

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

Im obigen Beispiel Sie im verifizieren Token Sie wählen für Ihre Webhook passieren muss, wenn der Server ausgeführt wird, bevor Sie versuchen, die Webhook zu überprüfen: die folgenden Ein besserer Weg, dies zu tun imo wäre.

Fügen Sie in Ihrem heroku-Dashboard VERIFY_TOKEN mit Ihrem Token als Wert für Ihre Konfigurationsvariablen hinzu. Dadurch wird das Überprüfungs-Token ohne Hardcoding verfügbar gemacht.

+0

Vielen Dank - das funktioniert! Fügen Sie einfach/webhook zur URL hinzu. Ihre Hilfe wurde sehr geschätzt. – Piallen

Verwandte Themen