Q&A

ngrokで外部公開したURLでWebhook検証を成功させたい。

したいこと

ngrokで外部公開したURLでwebhook検証を成功させたいです。

やったこと

ngrokでローカルサーバーのトンネリング

ローカルで立ち上げたWebサーバーをngrokで外部公開しました。 ngrokが生成したURLにアクセすると、レスポンスが返り、サーバーにもアクセスログが残っていました。 アクセス方法は、 ・別PCからのGETリクエスト ・WiFIを切った状態のスマホでのGETリクエスト ・Postmanを使って「X-LINE-SIGNATURE」無しでのPOSTリクエスト です。 なので、ngrokでの立ち上げ自体は成功しています。

発生したエラー

ngrokで外部公開したURLのうち、HTTPSの方のURLをwebhook URLに設定して「検証」ボタンをクリックすると、 「Webhookイベントオブジェクトを送信したときにエラーが発生しました」というエラーが発生します。 ”送信したときに”と記述されていますが、ローカルのWebサーバーにLINEからのアクセスログが残っていませんでした。 なので、Webhook検証のリクエストが送られていないと思います。

多分Message APIの方に原因があるのかなと思うのですが、 エラー文章でググっても1つもヒットしなかったので、解決方法が分からないです。。。 何方かお助け下さい。。。。。。。。。。

7月15日追記

shogoさんの回答をベストアンサーにさせていただきました。 また、LINE公式に問い合わせたところ以下の返信が来ました。 別案件でfacebookのWebhookも送信できないことを確認していますので、根本原因はngrokのセキュリティなんだと思います。

恐れ入りますが、現状「ngrok」をWebhook URLに設定したい場合、Webhookは送信されません。
なお、詳細はご案内ができかねますが、「ngrok」をWebhook URLで利用する上でセキュリティの問題が確認されたため、弊社にて制限を行っている状況です。

「ngrok」の制限の解除については、弊社でも再度検討している状況ですが、今後の対応については現状ご案内することができません。
※今後状況が変わる可能性もございます

お手数ですが、Webhookの受信を行いたい場合、現状は「ngrok」ではなく別のWebサーバーなどをご用意の上、対応をお願いいたします。
  • 2
  • 7
  • 4376
  • twitter facebook

リージョンを JP にしましたが、引き続き 400 Bad Request になります…

ngrok http -region=jp 3000

  • 0

私も他の方と同様ngrokのリージョンの変更を変更することと空のJSONオブジェクトとレスポンスで200を返すことで成功するようになりました。

コマンド例 ngrok http -region jp 4567

  • 1

同じく、リージョンの変更(Asia Pacific)で解決しました。ngrok側の問題のようですね。

  • 1

私も同じような現象だったのですが 下記の方と同様にngrokのリージョンを変更することで 動きましたので情報まで

リージョン指定方法の例) ./ngrok http -region=ap 5000

  • 1

ngrokのregionをap(Asia/Pacific)に変更したら私は解決しましたので、試してみてください^ ^ ※なおる保証はできませんが…m(_ _)m デフォルトではus(United States)になっていて、サーバーのレイテンシが高いのが原因?かもしれません。

  • 3

私も同じ問題で困っています。。。とりあえず暫定で localhost.run を使うことにしました。

http://localhost.run/

  • 1

faccebook jobのwebhookでも、ngrok経由のアクセスができなかったです。 もしかしたら、ngrok側に原因があるのかも?

  • 0
本当によろしいですか? question.vm