如何解决错误"未找到.Omniauth GitHub 的身份验证通过?



我用OmniAuth-Github实现了OmniAuth,它一直有效,直到它没有。

我目前收到以下错误:Not found. Authentication passthru.

附有:

Started GET "/users/auth/github" for ::1 at 2020-01-02 14:25:49 +0800
Processing by Users::OmniauthCallbacksController#passthru as HTML
Rendering text template
Rendered text template (Duration: 0.0ms | Allocations: 2)
Completed 404 Not Found in 1ms (Views: 0.7ms | ActiveRecord: 0.0ms | Allocations: 548)

这是我的代码,也可以在这里查看:https://github.com/mirhamasala/lw_city_guide

# routes.rb
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
# the routes
user_github_omniauth_authorize GET|POST /users/auth/github(.:format)
users/omniauth_callbacks#passthru
user_github_omniauth_callback GET|POST /users/auth/github/callback(.:format)
users/omniauth_callbacks#github
# devise.rb
config.omniauth :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET']
# controllers/users/omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
sign_in_and_redirect @user, event: :authentication # This will throw if @user is not activated
set_flash_message(:notice, :success, kind: "Github") if is_navigational_format?
else
session["devise.github_data"] = request.env["omniauth.auth"].except("extra")
redirect_to new_user_registration_url
end
end
def failure
redirect_to root_path
end
end
# user.rb
devise :database_authenticatable, :registerable,
:rememberable, :omniauthable, omniauth_providers: %i[github]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.password = Devise.friendly_token[0, 20]
user.username = auth.info.nickname
user.avatar = auth.info.image
user.name = auth.info.name
user.github_profile = auth.info.urls.GitHub
end
end

有什么想法吗? 🧐

事实证明,升级到 Rails 6 后,我再也没有jquery_ujs了,这是link_to助手工作所必需的。

最新更新