【发布时间】:2018-10-19 16:30:47
【问题描述】:
我收到此错误: 无法为 Users::OmniauthCallbacksController 找到操作“github”
我到处寻找并尝试了其他人帖子上的其他建议。
这是关于堆栈溢出的帖子,但他们有一个错字,我没有同样的错误。 Devise OmniauthsController not being used
此建议说要检查 rake 路线,但我的路线与我所指的相符。 https://github.com/plataformatec/devise/issues/1566
大多数其他链接都是类似的问题,我仔细检查了我的信息,更改了内容,但仍然出现错误。
关于我的代码的信息。 宝石文件:
gem 'omniauth-github'
config/routes.rb:
devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks' }
用户::OmniauthCallbacksController:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
定义 github @user = User.from_omniauth(request.env["omniauth.auth"]) 如果@user.persisted? sign_in_and_redirect @user, 事件: :authentication set_flash_message(:notice, :success, kind: "Github") if is_navigational_format? 别的 重定向到根路径 结尾 结尾 结束
用户模型:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, :omniauth_providers => [:github]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.uid = auth.uid
user.provider = auth.provider
user.password = Devise.friendly_token[0, 20]
user.name = auth.info.name #assuming the user model has a name
user.oauth_token = auth.credentials.token
user.image = auth.info.image #assuming the user model has an image
user.save!
end
结束
设计初始化器:
config.omniauth :github, Rails.application.secrets.github_client_id, Rails.application.secrets.github_client_secret, scope: 'user:email'
不知道该怎么做,因为我在 Users::OmniauthCallBacks 控制器中有方法?我错过了什么吗?我已经梳理了一整天。
【问题讨论】:
标签: ruby-on-rails devise omniauth