【问题标题】:Rails google-oauth2 404 - "Not found. Authentication passthru."Rails google-oauth2 404 -“未找到。身份验证通路。”
【发布时间】:2021-05-07 12:05:44
【问题描述】:

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

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

routes.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 %>
.
.
.

【问题讨论】:

  • 你有没有想过这个问题?我处于类似的位置。这个问题和其他一些问题似乎破坏了所有 OAuth2 教程。

标签: ruby-on-rails oauth-2.0 devise google-oauth omniauth-google-oauth2


【解决方案1】:

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

&lt;%= link_to "Sign in with Google", user_google_omniauth_authorize_path, method: :post, class: "oauth-link" %&gt;

如果您使用的是 Turbo,则需要将其更改为 button_to 并设置为 data-turbo: false

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2017-08-16
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2015-02-04
    • 2020-01-18
    相关资源
    最近更新 更多