Railsを初めて触る初心者が、過去の記事をあさりながらTwitterAPIを使ったOAuth認証を実装しようとしたときに躓いた話です。
環境
rails6
devise (4.8.0)
omniauth-twitter (1.4.0)
エラーと解決
以下の記事を参考に実装していました。
https://qiita.com/cigalecigales/items/16ce0a9a7e79b9c3974e
Sign in with Twitter
リンクを押して、TwitterのOAuth画面に遷移するはずでしたが、ページには遷移せず、「Twitter アカウントによる認証に失敗しました。理由:(Authenticity error)」となりNot found. Authentication passthru.
が発生しました。
deviseとomniauth-twitterのGithubを読んで原因を探すと....
(参照:https://github.com/heartcombo/devise/wiki/OmniAuth:-Overview)
omniauth-rails_csrf_protectionを必ずインストールして下さいとのこと。
omniauthに脆弱性 (https://github.com/omniauth/omniauth/pull/809) があることがわかり、その対策で必要だそうです。2015年から議論されており、2019年には既に解決していたそう。
しっかりドキュメントを読むことは大事。