18

Rails アプリの Facebook 認証の設定に取り組んでいますが、テスト中に Facebook アカウントでログインした後、次のエラーが発生し続けます。

OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}

どこから始めればいいのかよくわかりませんが、それについてオンラインで他に何も見つけられないようです。役立つ情報があれば、喜んで提供します。

4

6 に答える 6

17

私もこの問題を抱えていました。「(facebook)コールバックフェーズが開始されました」と表示されていました。Railsログに2回メッセージが表示されます。FB 認証を 2 回初期化していたことが判明し (私は Devise と Omniauth-Facebook を使用しています)、そのうちの 1 つがアクセス トークンをリセットしようとしていたと推測しています。

Omniauth-Facebook (config/initializers/omniauth.rb) で初期化子を無効にすると、問題が解決しました。

于 2012-12-10T10:37:04.140 に答える
7

これは、これまでオプションであったFacebookの変更によるものですが、すべての人に12/5/12に公開されます。2012年12月の重大な変更に関する開発者ロードマップから:

OAuth認証コードの新しいセキュリティ制限認証コード をアクセストークンと交換できるのは1回のみで、作成後10分以内にアクセストークンと交換する必要があります。これは、最初から「認証コードは短命で使い捨てでなければならない」と述べているOAuth2.0仕様に沿ったものです。詳細については、認証に関するドキュメントをご覧ください。

これを考慮してアプリを更新する必要があります。

乾杯

于 2012-12-03T19:11:01.427 に答える
2

このバグは、最後のfacebook プッシュの直後に発生し、今朝 facebook に報告されました。

それまでの間、このレポートに詳細を投稿し、フォローして、この問題を解決するために Facebook の人々を助けたり、要請したりする必要があります。

于 2012-07-10T10:56:54.570 に答える
1

誤って 2 回初期化OmniAuthし、2 回呼び出していconfig/initializers/omniauth.rbました。

OmniAuth::Builderこれにより、ミドルウェア スタックが 2 回追加されます。最近の Facebook の変更により、これはエラーで失敗し始めました100

OmniAuth::Builderこの問題を解決できたら、追加されたことを確認してください。

ミドルウェア スタックを再確認するには、次を実行します。

rake middleware
于 2013-01-02T18:35:20.080 に答える
1

私は同じ問題を抱えていて、最終的に私の場合の問題を見つけました。したがって、この問題を抱えていて、Devise を使用せずに Omniauth だけを使用している場合、問題の根本的な原因は、リダイレクトの間違ったルートにある可能性があります。

  1. サーバーのdevelopment.logを確認してください
  2. リダイレクト先を見つけます(「リダイレクト先」でgrep)
  3. 要点は次のとおりです。コールバック URL が正しいかどうかをログで確認してください。

私の場合、routes.rb には次のようなものがあります。

get "mycontroller/home"

これは問題ありませんが、私の SessionController には次のものもありました。

def create
    auth_hash = request.env['omniauth.auth']
    user = User.from_omniauth(auth_hash)
    session[:user_id] = user.id
    redirect_to "mycontroller/home"
end

そのため、コントローラーのこの行を次のように変更して機能させました。

redirect_to "mycontroller/home"

redirect_to "/mycontroller/home"
于 2014-03-11T05:53:31.020 に答える
0

だから私はこれを回避することができました。私のアプリケーションは Facebook 認証を処理していたようで、2 回目の認証を試みたところ、このエラーが発生しました。root_url にリダイレクトしようとしていたので、奇妙です。いずれにせよ、ユーザー情報をデータベースに保存した後、リダイレクト先のページを「root_url」から「/」に変更すると、すべての違いが生じたようです。

開発ログをチェックして、同様のエラーが発生しているかどうかを確認することをお勧めします。

于 2012-07-11T02:14:12.403 に答える