为什么omniauth初始化两次?

Wil*_*ill 3 facebook ruby-on-rails omniauth

我正在尝试将facebook身份验证添加到我的网站.到目前为止,我已添加:

的Gemfile

gem 'omniauth-facebook', '1.4.0'
Run Code Online (Sandbox Code Playgroud)

配置/初始化/ omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'XXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXX', {:provider_ignores_state => true}
end
Run Code Online (Sandbox Code Playgroud)

配置/ routes.rb中

match '/auth/:provider/callback', :to => 'sessions#create', as: 'callback'
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ sessions_controller.rb

class SessionsController < ApplicationController
  def create
    render :text => request.env['omniauth.auth'].inspect
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题是初始化似乎运行了两次.在rails服务器的日志中,我看到:

(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, : 
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, : 
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Run Code Online (Sandbox Code Playgroud)

当我跑步时,rake middleware我看到OmniAuth::Builder两次.任何建议将不胜感激.

小智 5

正如Richlewis所指,如果你使用Devise和OmniAuth,你需要跳过额外的omniauth.rb初始化程序,只需在initializers/devise.rb中配置config.provider"KEY","SECRET",然后继续执行.

  • 虽然我没有omniauth.rb文件omniauth请求阶段启动两次.开始获取"/ users/auth/google_oauth2"获取127.0.0.1于2014-02-12 10:05:42 +0530我,[2014-02-12T10:05:42.046501#4240]信息 - omniauth:(google_oauth2)请求阶段已启动.开始获取"/ users/auth/google_oauth2"for 127.0.0.1 at 2014-02-12 10:05:42 +0530 I,[2014-02-12T10:05:42.402859#4240] INFO - omniauth:(google_oauth2)请求阶段已启动. (6认同)