[英]Rails google-oauth2 404 - "Not found. Authentication passthru."
[英]Google OAuth 2.0 + Ruby on Rails 404: “Not found. Authentication passthru.”
以下是相关代码(如果我遗漏任何内容,请告诉我。)。
路线.rb:
devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
devise_scope :user do
match '/sessions/user', to: 'devise/sessions#create', via: :post
get '/join' => 'users/registrations#new'
end
resources :users do
resources :video_lessons do
resources :likes
end
end
resources :users, only: [:show, :index]
devise.rb:
if Rails.env.production?
config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID_PROD'[, ENV['GOOGLE_CLIENT_SECRET_PROD'], {}
else
config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID_DEV'], ENV['GOOGLE_CLIENT_SECRET_DEV'], {}
end
omniauth_callbacks_controller.rb
def google_oauth2
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.from_omniauth(request.env['omniauth.auth'])
if @user.persisted?
flash[:notice] = I18n.t 'devise.omniauth_callbacks.success', kind: 'Google'
sign_in_and_redirect @user, event: :authentication
else
session['devise.google_data'] = request.env['omniauth.auth'].except(:extra) # Removing extra as it can overflow some session stores
redirect_to new_user_registration_url, alert: @user.errors.full_messages.join("\n")
end
end
设计/注册/new.html.erb
<%= link_to "Sign up with Google", user_google_oauth2_omniauth_authorize_path %>
我的开发者控制台中的授权重定向 URI 是: http://localhost:3000/users/auth/google_oauth2和https://localhost:3000/users/auth/google_oauth2
我已经完全按照文档( https://github.com/zquestz/omniauth-google-oauth2 )进行操作,但无济于事。
谢谢您的帮助!
我最近通过本指南得到了这个工作。 更具描述性的资源和指南的来源是这个官方 wiki 示例。
此提交显示了我使用我首先提到的指南在我的 rails 登录页面上设置的所有文件。
只需确保在使用任一指南时删除额外的部分数据,因为它可能会溢出某些 session 存储。 指南不包含这一重要信息。 因此,在omniauth_callbacks_controller.rb 的这一行中,您当前的代码是正确的:
...
else
session['devise.google_data'] = request.env['omniauth.auth'].except(:extra) # Removing extra as it can overflow some session stores
....
祝你好运!
<%= link_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path, method: :post %>
请求应该是“发布”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.