6

facebookユーザーが既存のアカウントを介してログインできるように、RoR4 アプリに取り組んでいます。Facebook アプリ (ライブでテスト済みのバージョン) を登録し、その API とシークレットを に保存しましたdevelopment.rb。omn​​iauth-facebook と devise gems を使用したところ、" Csrf detected" 問題が発生しました。

私のアプリケーションのコードは、このブログ投稿から非常にインスピレーションを受けています: http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/

2年前のstackoverflowの投稿(Rails + omniauth + facebook - csrf detected)から解決策を見ましたが、最新のomniauth-facebookバージョンは投稿されたものよりもはるかに優れています. いずれにせよ、omniauth-facebook gem をバージョン 1.4.1 にロールバックしようとしましたが、それでもこの問題が発生しました。

宝石

oauth2 (1.0.0)
omniauth (1.2.2)
omniauth-facebook (2.0.1)
omniauth-oauth2 (1.3.1)

アイデア?

エラーログ

(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
4

1 に答える 1

3

デバイスと omniauth-facebook で同様の問題がありますが、それは私の間違いでした。

以前は、Facebook アプリ ID とシークレットを両方device.rbomniauth.rb初期化子に追加しました (どちらもconfig/initializersフォルダーの初期化子です)。これらの Facebook 設定をomniauth.rbサーバーから削除して再起動したところ、動作しました。

device.rbおよび他の omniauth 関連のイニシャライザを確認してください。

効くかも..

于 2015-11-13T10:23:12.110 に答える