2

尝试使用 Google Oauth 登录时,我遇到 404 错误“未找到。身份验证通路”。这仅在一个月前在我的网站上有效,并且我没有更改任何应该影响身份验证的内容。我已经看过其他几篇关于此的帖子,但在我的情况下似乎没有一个有效。

初始化程序/devise.rb

Devise.setup do |config|
  config.omniauth :google_oauth2, ENV['GOOGLE_OAUTH_CLIENT_ID'], ENV['GOOGLE_OAUTH_CLIENT_SECRET']
.
.
.

宝石文件

gem 'devise', github: 'heartcombo/devise'
gem 'omniauth', '~> 1.6', '>= 1.6.1'
gem 'omniauth-google-oauth2'
gem "omniauth-rails_csrf_protection"

路线.rb

  devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
  devise_scope :user do
    get 'users/sign_in', to: 'users/sessions#new'
    get 'users/sign_out', to: 'users/sessions#destroy'
  end

看法

<%- if devise_mapping.omniauthable? %>
  <%- resource_class.omniauth_providers.each do |provider| %>
    <% if provider = "google_oauth2" %>
      <%= link_to "Sign in with Google", omniauth_authorize_path(resource_name, provider), method: :post, class: "oauth-link" %><br />
    <% else %>
.
.
.
4

1 回答 1

1

我自己也遇到了这个问题,并认为 404 是某种错误。我相信这是 Omniauth 控制器无法识别提供者时的预期响应。尝试:

<%= link_to "Sign in with Google", user_google_omniauth_authorize_path, method: :post, class: "oauth-link" %>

如果您使用的是 Turbo,则需要将其更改为 abutton_to和 set data-turbo: false

于 2022-01-24T02:10:14.063 回答