gpt4 book ai didi

ruby-on-rails - 无法设计全能工作

转载 作者:行者123 更新时间:2023-12-01 05:31:15 25 4
gpt4 key购买 nike

我需要访问谷歌 API,我试图让用户使用 Devise 2.1.1 和 Omniauth 登录他们的谷歌帐户(使用 gem google_oauth2 因为 OAuth2 是谷歌文档中推荐的一个)。

不幸的是我不能让它工作,这是 routes.rb

TestApp::Application.routes.draw do
root :to => 'Landing#index'

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

devise_scope :user do
get 'sign_in', :to => 'users/sessions#new', :as => :new_session
get 'sign_out', :to => 'users/sessions#destroy', :as => :destroy_session
end
end

然后我配置了 config/initializers/devise.rb包括一行
  config.omniauth :google_oauth2, 'ID', 'SECRET', {access_type: 'offline', approval_prompt: 'force', scope: 'https://www.googleapis.com/auth/analytics.readonly'}

实际上我有一个空回调类 app/controllers/users/omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
end

当我点击“使用 Google 登录”时,我在 Google 上被重定向,请求授权,然后我回到回调,并在 URL http://localhost:3000/sign_in.user 上被重定向。有错误
uninitialized constant Users::SessionsController

这里有什么问题?我花了 2 天的时间试图自己弄明白,我玩了很多配置,但从来没有让它工作,这让我开始感到沮丧。

这是 rake routes 的输出
root     /                                      Landing#index
user_omniauth_authorize /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/google_oauth2/}
user_omniauth_callback /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:google_oauth2)
new_session GET /sign_in(.:format) users/sessions#new
destroy_session GET /sign_out(.:format) users/sessions#destroy

最佳答案

您似乎被重定向到您的 sign_in搜索 users/sessions#new 的路径根据您的 routes.rb .

然而,Users::SessionsController不存在导致您描述的错误。

我不确定在哪些情况下设计/OmniAuth 将您重定向到该特定路线,但我想您可以将其转到您的主页(人们可以再次单击 Google OAuth 登录按钮/链接)或将其直接连接到Google OAuth 页面。 (这可能会让人们陷入无限循环,具体取决于 Devise/OmniAuth 使用 sign_in 路由的方式。)

关于ruby-on-rails - 无法设计全能工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com