FlaskでLINEボットを作成時に400エラーが発生した

この記事について

環境Flask + line-bot-sdk-python(さくらのVPS)
目的LINEボットのwebhookエンドポイントが400を返す原因を特定する
結果flask-wtfのCSRF保護が原因。webhookページだけCSRF保護を無効にして解決

つまずきポイント要約

  • LINE側はCSRFトークンを送れないので、CSRF保護が有効なwebhookエンドポイントは必ず400になる
  • 原因はpythonのエラーログ(The CSRF token is missing.)で分かる

事象

サンプルコードをもとにflaskでLINEボットを作成したが、apiのエンドポイントにリクエストを投げると400エラーが返る。

サンプルコード掲載ページ

GitHub - line/line-bot-sdk-python: LINE Messaging API SDK for Python
LINE Messaging API SDK for Python. Contribute to line/line-bot-sdk-python development by creating an account on GitHub.

原因

pythonのエラーログを確認

INFO:flask_wtf.csrf:The CSRF token is missing.

対処

LINE側からはcsrf対策に必要なトークンを投げられないので、csrf対策を無効にすることで解決

一部のページだけcsrf保護を無効にする具体的なやり方はこちら → flaskで特定のページだけcsrf保護を除外

タイトルとURLをコピーしました