8

Rails3.2.9でomniauth-facebookを使用してFacebookにログインしようとしています。私はhttp://railscasts.com/episodes/360-facebook-authenticationのRyanBatesの手順に従いましたが、この瞬間に同じコードを使用しています。

Javascriptなしでログインしようとすると機能します(Facebookに移動し、アクセス許可を付与して、アプリに正常に戻ります)が、Javascript(Facebookポップアップ用)を使用しようとすると、最初にポップアップが表示されますログインしますが、リダイレクトを行い、このエラーをスローします(権限を要求せずに):

Started GET "/auth/facebook/callback" for 127.0.0.1 at 2012-11-16 15:16:03 -0600
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError

OmniAuth::Strategies::OAuth2::CallbackError (OmniAuth::Strategies::OAuth2::CallbackError)

これは非常に一般的なエラーです。私は調査を行い、すべての解決策を試しましたが(ほとんどは数か月前のものです)、どれも機能しません。これは私が試したことです:

  1. Facebookでサンドボックスをチェックすることは無効になっています(そして私は伝播を何時間も待っていました)
  2. サイトのURLを確認してhttp://localhost:3000/
  3. アプリIDとアプリシークレットを確認する
  4. omn​​iauth-facebook gemを1.4にダウングレードすると、次のエラーがスローされます:omniauth-facebook must pass either aコードparameter or a signed request (viasigned_request parameter or afbsr_XXXcookie)
  5. Rails3.2.8にダウングレードする

他に何をすべきですか?(キーはJavascriptにあると思いますが、現在、CoffeeScriptを使用した同じビデオコードがあります)。前もって感謝します!

4

2 に答える 2

17

私はちょうど今そのRailscastをフォローし、なんとかそれを機能させることができました。コメントであなたの問題について話し合っている人々に気付くでしょう。そこにあるリンクをたどると、Githubでこの問題が発生し、StackOverflowでこの質問が発生しました。

最終的にリリースされたときに1.6.0更新することをお勧めします。2.0.0それまでの間、次のような間違いを犯していないことを確認してください。

  • omniauth.rb2つの異なる初期化子(通常はと)でアプリのクレデンシャルを定義しますdevise.rbソース

  • ライブサイトとFacebookアプリケーション内で構成されたサイトURLの間にドメイン名の不一致がある。ソース

  • Facebookアプリケーションをサンドボックスモードのままにしておくと、ドメイン名が本番ドメイン名と一致しなくなります。ソース

  • OmniauthCallbacksControllerまたはApplicationControllerにを追加しbefore_filter :authenticateます(OmniauthCallbacksControllerはApplicationControllerから継承するため)。ソース

  • omniauth-facebookFacebookのクライアント側のフローと組み合わせて使用​​します。ソース

  • stateパラメータをいじります。

于 2012-11-22T18:27:07.187 に答える
0

ダウングレードせずに解決する(現在1.5.1を使用):

https://github.com/intridea/omniauth-oauth2/issues/32- >これをプロバイダー宣言に追加します:provider:facebook、xxxxxxxxx、yyyyyyyyy、{:provider_ignores_state => true}

于 2013-12-19T20:07:24.810 に答える