ruby-on-rails - Rails、Devise 和 Facebook Oauth : request. env ["omniauth.auth"] 为零

标签 ruby-on-rails devise oauth-2.0

我在 Rails 应用中使用 Facebook Oauth 和 Devise。我成功进入了 facebook 登录页面,但随后在回调操作中出现错误。追踪到 request.env["omniauth.auth"]返回 nil在我的回调操作中。

gem 文件:

gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'

路线:
  devise_scope :user do
    get '/users/auth/facebook/callback', to: 'users/omniauth_callbacks#facebook'
  end

  resources :users
  devise_for :users, path: '', path_names: { sign_up: 'register', sign_in: 'login', sign_out: 'logout'}, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

初始值设定项/devise.rb:
config.omniauth :facebook, Figaro.env.facebook_key, Figaro.env.facebook_secret,
                scope: 'email,public_profile',
                callback_url: Figaro.env.facebook_callback_url

用户.rb:
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, 
          :recoverable, :rememberable, :trackable, :confirmable, :validatable,
          :omniauthable, :omniauth_providers => [:facebook]

omn​​iauth_callbacks_controller.rb:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

 def facebook

    @user = User.from_omniauth(request.env["omniauth.auth"])
     request.env["omniauth.auth"]   ## <<=== this is nil

知道为什么我的 request.env["omniauth.auth"]正在返回 nil ?

最佳答案

所以最后我找到了这个问题,我也为同样的问题苦苦挣扎了很长时间,但现在我们有了解决方案,好吧,我们开始吧:

问题出在 devise.rb 上,只需从文件中删除它:

config.omniauth :facebook, Figaro.env.facebook_key, Figaro.env.facebook_secret,
                scope: 'email,public_profile',
                callback_url: Figaro.env.facebook_callback_url

然后重新启动您的服务器,然后尝试通过 facebook 登录。

你会得到你想要的:)

谢谢,享受编码 :)

关于ruby-on-rails - Rails、Devise 和 Facebook Oauth : request. env ["omniauth.auth"] 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840824/

相关文章:

ruby-on-rails-3 - #<ActiveRecord::ConnectionAdapters::TableDefinition:0x9dee690> 的未定义方法 `database_authenticatable'

c# - 自定义 WebAPI "Access Denied"响应

ruby-on-rails - 找不到 id=sign_out 的用户

ruby-on-rails - 设计 - 将 OAuth 与现有帐户合并

ruby - 如何在使用门卫的 oauth 提供商上为我的用户预授权客户端应用程序?

c# - 如何在 Swagger-ui 进行的 oauth2/token 调用中发送 "audience"字段?

ruby-on-rails - 限制对 Rails 引擎路由的访问...约束不起作用

ruby-on-rails - 为 Rspec 测试填充在父 Controller 中定义的实例变量

ruby-on-rails - Ruby on Rails : What are Erubis' disadvantages and why isn't it packaged with Rails by default? 如何设置?

ruby-on-rails - 将 Rails 代码映射到 SQL 语句