2012-07-18 8 views
5

これはFacebookにログインしようとしたときに表示されるエラーです。いつもそのエラーが表示されます。Rails 3.2 + Facebook auth + CSRF FAILURE

"Csrf detected"のためFacebookからあなたを承認できませんでした。

私はスキップ置く:Omniauthコールバックに

skip_before_filter :verify_authenticity_token 

を、それでも私はエラーを取得します。これは、ローカルとプロード(ヒロク)環境の両方にあります。私はheroku環境変数を設定しました。何か案が?

答えて

6

私は問題は宝石が新しすぎるとfbはしたくなかったのFacebookへのSTATEヘッダを渡していたことが分かった見つけるためにあなたにヒントを与えることを願っています。私はオムニアス - フェイスブックの宝石のバージョンをロールバックし、それは働いた

+0

あなたはどのバージョンにロールバックしましたか? –

+4

私はomniauth-facebookを1.4.0にダウングレードしても問題は解決しましたが、同じ問題がありました。 –

+0

https://github.com/mkdynamic/omniauth-facebook/issues/75およびhttps://github.com/intridea/omniauth-oauth2/issues/20詳細は – Nevir

0

、あなたのアプリケーションコントローラ

7

に...多分追加

before_filter :set_p3p 
private 

def set_p3p 
    headers['P3P'] = 'CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"' 
end 

をP3Pヘッダを送信している私はあなたが同じ日に持っている同じ問題を持っていました! 私はそれが宝石のアップデートかこれのようなものだと思ったが、まったくそうではなかった。 深いデバッグを行うと、omniauthの "Callback phase started"が見つかりました。二度呼ばれた。

それは

プロバイダの愚かな二重の初期化に起因します。config /初期化子/ devise.rbで、別の初期化子でのFacebook、.....

一つ。

は、私はそれがあなたのエラー

+1

私は問題が宝石だったことがわかりました、そして、嫌いだったフェイスブックにステートヘッダーを渡す。私はomniauth-facebookの宝石のバージョンをロールバックし、それは働いた。 – tesserakt

+0

+1、素晴らしい!あなたは私の一日を救った!ありがとうございました:) – Surya

+0

私は別のomniauthプロバイダーでこの問題が発生しており、これを見るまでそれを理解できませんでした。ありがとう! – Arrel