加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 无法设计无所不能的工作

发布时间:2020-12-17 02:02:10 所属栏目:百科 来源:网络整理
导读:我需要访问谷歌API,我试图让用户使用Devise 2.1.1和Omniauth使用他们的谷歌帐户登录(使用gem google_oauth2,因为OAuth2是来自谷歌文档的推荐). 不幸的是,我无法让它工作,这就是routes.rb TestApp::Application.routes.draw do root :to = 'Landing#index' de
我需要访问谷歌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登录”时,我被重定向到谷歌,要求授权,然后我回到回调,然后我重定向到URL http:// localhost:3000 / sign_in.userwith error

uninitialized constant Users::SessionsController

这有什么不对?我花了两天时间试图弄清楚它,我玩了很多配置,但从来没有让它工作,它开始让我感到沮丧.

这是佣金路线的输出

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路线,该路线根据您的routes.rb搜索用户/会话#new.

但是,Users :: SessionsController不存在,导致您描述的错误.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读