我正在尝试使用带有Omniauth选项的Devise创建一个Rails应用程序,用于用户管理。 我正在尝试一次让一个OAuth服务工作,从Github开始。 欢迎页面加载,我单击使用 Github 登录,转到 Github 授权页面并允许,然后重定向开始,我收到错误消息The action 'github' could not be found for Devise::OmniauthCallbacksController
。
我不明白为什么我会收到此错误b/c,我已经在应用程序/控制器/用户/omniauth_callbacks_controller.rb中定义了操作,如下所示:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
app/models/user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :lockable, :omniauth_providers => [:github]
end
和 app/config/routes.rb
Rails.application.routes.draw do
get 'welcome/index'
root 'welcome#index'
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
end
它试图回退到默认的Devise OmniauthsCallbacksController,而不是使用我的用户/omniauths_callbacks_controller.rb,但我不知道为什么。 有什么建议吗?
可能相关信息:
ruby v 2.4.0
rails v 50.0.1
omniauth v 1.3.2
devise v 4.2.0
omniauth-github v 1.1.2
尝试替换
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
自
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }