在 Rails 中从 Omniauth Facebook 获得 NIL 响应
Getting NIL response from Omniauth Facebook in Rails
我正在尝试在我的 Rails 应用程序中使用 Omniauth 登录 Facebook,当我在控制台视图中查看响应时它似乎工作正常,但我没有在 env[ 'omniauth.auth'],当我尝试检查它时 returns NIL。
但在控制台中,我可以看到响应为:
Object { accessToken="EAAHQ5CgynEoBAFfoTk5kSs7...WxZCw1fDHLQ4CBEspCgBAZD", userID="1268814806542277", expiresIn=7198, more...}
我使用 Rails 5.0.0.1 和 Ruby 2.3.0p0
Gemfile
gem 'omniauth'
gem 'omniauth-facebook', '1.4.0'
omniauth.rb
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'APP ID', 'APP SECRET', scope: 'email', display: 'popup', :info_fields => 'name,email', :include_granted_scopes => true
end
sessions_controller
class SessionsController < ApplicationController
def create
abort(env["omniauth.auth"].inspect) // here I am getting the NIL response
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
return redirect_to new_user_session_path
end
def destroy
session[:user_id] = nil
return redirect_to root_url
end
end
为什么会这样?
所以我终于找到了问题所在。问题出在 devise.rb,我在我的 devise.rb 中使用了以下代码,我只是删除了那些行,它开始工作了。
config.omniauth :facebook, app_id, app_secret, scope: 'email, public_profile'
我正在尝试在我的 Rails 应用程序中使用 Omniauth 登录 Facebook,当我在控制台视图中查看响应时它似乎工作正常,但我没有在 env[ 'omniauth.auth'],当我尝试检查它时 returns NIL。
但在控制台中,我可以看到响应为:
Object { accessToken="EAAHQ5CgynEoBAFfoTk5kSs7...WxZCw1fDHLQ4CBEspCgBAZD", userID="1268814806542277", expiresIn=7198, more...}
我使用 Rails 5.0.0.1 和 Ruby 2.3.0p0
Gemfile
gem 'omniauth'
gem 'omniauth-facebook', '1.4.0'
omniauth.rb
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'APP ID', 'APP SECRET', scope: 'email', display: 'popup', :info_fields => 'name,email', :include_granted_scopes => true
end
sessions_controller
class SessionsController < ApplicationController
def create
abort(env["omniauth.auth"].inspect) // here I am getting the NIL response
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
return redirect_to new_user_session_path
end
def destroy
session[:user_id] = nil
return redirect_to root_url
end
end
为什么会这样?
所以我终于找到了问题所在。问题出在 devise.rb,我在我的 devise.rb 中使用了以下代码,我只是删除了那些行,它开始工作了。
config.omniauth :facebook, app_id, app_secret, scope: 'email, public_profile'