This authorization code has been used
Rails4のoauth認証でハマった。
http://npb.somewhatgood.com/blog/archives/715
のサイトを参考にしてfacebookからoauthを使用してユーザー情報を取得しようとした。
しかし、csrf系のエラーが発生!
これは
Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], :provider_ignores_state => true end
provider_ignores_stateをtrueにすると回避出来るらしい。
しかし、その後もエラーでThis authorization code has been usedという、メッセージがfacebookから返ってくる。しかも一度目エラーが出て、ブラウザのバックボダンで戻って再度やると通る…
セッションとか、Facebook Develooperのアプリ設定が間違いがあるのではないかと、調べたが解決しない。
結局、新規アプリを作ってそこに組み込んでみて試して、今のアプリと比較したところ、現状のRailsアプリにはベーシック認証がかかっており、これを外すとちゃんと動作した。
エラーメッセージと原因がリンクしてなかったので、めちゃくちゃ時間がかかった。
もし、同じバグにあったら一度oauth認証ではベーシック認証を外してみることをおすすめする。