web-dev-qa-db-ja.com

Facebook Messenger API:Webhookのセットアップに関する問題

PHP Webサーバーで新しいFacebook Messengerボットプラットフォーム用のWebフックを設定しようとしていますが、このエラーが表示されます:

URLを検証できませんでした。応答がチャレンジと一致しません。期待値= '364011207'、受信済み= '

資源

https://developers.facebook.com/docs/messenger-platform/quickstart

https://developers.facebook.com/docs/messenger-platform/webhook-reference#common_format

どんな助けも大歓迎です。

16
Shane

私は修正に出会いました。 jsの試みを破棄し、次のコードを使用して新しいphpファイルを作成しました。

<?php

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'my_token_code') {
echo $challenge;
}

このビデオの最初の10分間でこのコードを取得しました: https://www.facebook.com/marketingdevelopers/videos/883648801749520/

24
Shane

そのコードはnode.jsコードであり、HTMLの<script>タグではなくサーバーで実行する必要があります。

Node.jsでメッセンジャーボットを設定する簡単な手順を次に示します。 https://github.com/voronianski/simon-le-bottle

基本的に、node.jsアプリケーションをサポートするホストがあることを確認し、そのように実行する必要があります。 HTML内では機能しません。

6
Jamund Ferguson

コールバックURLに「/ webhook」を追加して、この問題を解決しました...

4
Zernel

これをNode.jsアプリケーションとして実行していて、質問で言及されている The Facebook Quickstart Guide から来ている場合、webhook URLを[your-server-root]/webhookにポイントする必要があります。 チュートリアル のこの部分に注目してください。

// Adds support for GET requests to our webhook
app.get('/webhook', (req, res) => {
    ...
    // Responds with the challenge token from the request
    res.status(200).send(challenge);
});
3
che-azeh

@shane

webhook: function(req, res) {

   if (req.query['hub.verify_token'] === 'tokentoken') {
      res.send(req.query['hub.challenge']);
   } else {
      res.send('Error, wrong validation token');    
   }
}

正確に何をしているかに注意してください。しかし、これは私がやったことであり、働いています。

ドメイン名がなく、コールバックURLが https://werwrwetwtw.ngrok.io/webhook であるため、ngrokサーバーを使用してテストしました

お役に立てれば!

3
Natraj

これが役立つかどうかはわかりませんが、FBが送信するクエリパラメータはドットではなくアンダースコア付きです:

  • hub_verify_token
  • hub_mode
  • hub_challenge

追伸.

申し訳ありませんが、これはPHPに有効です

2
Stan Kolev