在Rails中从Omniauth Facebook获得NIL响应

时间:2017-03-21 06:14:42

标签: ruby ruby-on-rails-5 omniauth omniauth-facebook

我正在尝试使用Omniauth在我的Rails应用程序中使用Facebook登录,当我在控制台视图中查看响应时它似乎正在工作,但我没有在env [' omniauth中获得任何信息。 auth'],当我尝试检查它时返回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

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

所以最后我发现了这个问题。问题出在devise.rb上,我在devise.rb中使用了以下代码,我刚删除了那些行,它开始工作了。

config.omniauth :facebook, app_id, app_secret, scope: 'email, public_profile'