[FIXED] Antwortstruktur der Facebook-Webhook-Verifizierung

Ausgabe

Dies ist das erste Mal, dass ich die Frage poste. Bitte geben Sie Feedback, um die Frage zu verbessern.

Der Facebook-Webhook erwähnt, dass der Endpunkt zuerst verifiziert werden sollte, bevor der Webhook-Endpunkt Ereignisbenachrichtigungen empfangen kann.

Die Dokumentation für Verification Request stellt keine Antwortstruktur für die API bereit. Es sagt uns einfach, dass wir den hub.challenge-Parameter zurücksenden sollen.

Da ich NodeJS verwende, versuche ich es mit dem folgenden Code. Der Webhook vom Facebook-Dashboard wird jedoch nicht überprüft.

Wie sollen wir die Antwort an die Überprüfung des Webhook zurücksenden?

 app.get('/webhook', (req, res) => {
  const challenge = req.query['hub.challenge'];
  const verify_token = req.query['hub.verify_token'];
  
  if (verify_token === process.env.FACEBOOK_VERIFICATION_TOKEN) {
    return res.status(200).send({message: "Success", challenge: challenge});
  }
  return res.status(400).send({message: "Bad request!"});
})

Lösung

Der Verifizierungsendpunkt von Facebook erfordert, dass der Inhaltstyp der Antwort text/html. Dies wird in den Dokumenten nicht erwähnt; sie hätten eine Struktur bereitstellen sollen. Sie können den Header so einstellen, dass er text/htmlexplizit verwendet wird.

Wenn Sie jedoch Express verwenden, können Sie direkt nur den Challenge-Wert zurückgeben.

app.get('/webhook', (req, res) => {
  const challenge = req.query['hub.challenge'];
  const verify_token = req.query['hub.verify_token'];
  
  if (verify_token === process.env.FACEBOOK_VERIFICATION_TOKEN) {
    return res.status(200).send(challenge);  // Just the challenge
  }
  return res.status(400).send({message: "Bad request!"});
})

Wenn Sie das Fastify-Set verwenden:

      res.header('Content-Type', 'text/html; charset=utf-8');
      return res.send('' + challenge);


Beantwortet von –
LEXTRA33


Antwort geprüft von –
Cary Denson (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like