4

facebook既存のアカウントを介してサイトにログインする作業をしています。そこで、Facebookアプリケーションを登録し、APIシークレットをファイルdevelopment.rbに保存しました。production.rb次に、omniauth-facebook gem+を使用devise gemしてこれを実装しました。それは完璧に動作します。

ちなみに、ユーザーは内部認証(デバイスによる)またはusigfacebookアカウントのいずれかでログインできます。

しかし、奇妙な問題があります。アプリケーションを登録したという点でFacebookアカウントにログインした場合にのみ完璧に機能します。

そこで、Railsアプリケーションで使用されているアプリケーションがない別のFacebookアカウントを登録して、ログインしようとしました。「エラーが発生しました。しばらくしてからもう一度お試しください。」というエラーが発生しました。... 「「Csrfが検出された」ため、Facebookアカウントから認証できませんでした」

1.4.1ではなく1.4.0omniauth-facebookgemを使用しようとしましたが、「codesigned_requestfbsr_XXX」というエラーも発生must pass either aしましparameter or a signed request (viaparameter or acookie)

宝石

oauth2 (0.8.0) 
omniauth (1.1.0) 
omniauth-oauth2 (1.1.0) 
omniauth-facebook (1.4.1) 
warden (1.2.1)
devise (2.1.2)

あなたのアイデアは?

4

3 に答える 3

8

私もこの問題を抱えていました.Facebookアプリケーションでまだ「サンドボックス」モードが有効になっていることがわかりました. これもあなたの問題かもしれません:)

そうでない場合は、関連するログ エントリを投稿していただけますか?

于 2012-08-20T16:39:02.243 に答える
4

私の場合provider_ignores_state: true、Omniauth の設定に以下を追加する必要がありました。

config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], {
  strategy_class: OmniAuth::Strategies::Facebook,
  provider_ignores_state: true
}

これはomniauth-facebookgemバージョン1.6.0にあります。

https://github.com/mkdynamic/omniauth-facebook/issues/73にも詳細情報があります

于 2014-02-20T21:58:23.083 に答える
0

「omniauth.rb」を削除したときにこの問題を解決しました。これは、devise.rb に以下の構成が既にあるためです。

  config.omniauth :facebook, ENV["FB_ID"], ENV["FB_SECRET"],
    scope: 'email',
    info_fields: 'email, first_name, last_name',
    image_size: 'large',  # 50x50, guaranteed ratio
    secure_image_url: true

サーバーを再起動してテストすることを忘れないでください。

于 2017-08-28T20:49:24.887 に答える