【问题标题】:Rails, Devise, and Facebook Oauth: request.env["omniauth.auth"] is nilRails、Devise 和 Facebook Oauth:request.env["omniauth.auth"] 为 nil
【发布时间】:2017-01-24 23:27:48
【问题描述】:

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

宝石文件:

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" }

initializers/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]

omniauth_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吗?

【问题讨论】:

  • 你找到解决办法了吗?

标签: ruby-on-rails devise oauth-2.0


【解决方案1】:

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

问题出在 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 登录。

你会得到你想要的:)

谢谢,喜欢编码:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多