【问题标题】:Omniauth error: No route matches [GET] "/auth/facebook"Omniauth 错误:没有路由匹配 [GET] "/auth/facebook"
【发布时间】:2013-12-19 20:21:48
【问题描述】:

我的应用在三周前运行良好,但在尝试通过 Facebook 登录后恢复工作后出现此错误:

No route matches [GET] "/auth/facebook"

不知道发生了什么。我查看了 Stackoverflow,但只找到了与 Devise gem 相关的帮助。

注意:我没有使用 Devise gem。

我的应用在 Ruby 2.0 和 Rails 4 上

我的 gemlock 文件显示了以下版本的 omniauth:

  oauth2 (0.8.1)
      faraday (~> 0.8)
      httpauth (~> 0.1)
      jwt (~> 0.1.4)
      multi_json (~> 1.0)
      rack (~> 1.2)
    omniauth (1.1.4)
      hashie (>= 1.2, < 3)
      rack
    omniauth-facebook (1.4.0)
      omniauth-oauth2 (~> 1.0.2)
    omniauth-oauth2 (1.0.3)
      oauth2 (~> 0.8.0)
      omniauth (~> 1.0) 

这是我的路线.rb:

Mybrary::Application.routes.draw do
  get "sessions/create"
  get "sessions/destroy"
  resources :users do
    resources :items, except: [:index]
  end


  resources :groups
  root 'users#splash'


  get 'items/search' => 'items#search_results', as: :search_item

  post 'user/:id/requests/:item_id' => 'users#request_loan', as: :request_loan
  post 'user/:id/approves/:item_id' => 'users#approve_loan', as: :approve_loan
  post 'user/:id/denies/:item_id' => 'users#deny_loan', as: :deny_loan
  post 'user/:id/returns/:item_id' => 'users#return_loan', as: :return_loan

  post 'group/:id/join_group/:user_id' => 'groups#join_group', as: :join_group
  post 'group/:id/leave_group/:user_id' => 'groups#leave_group', as: :leave_group

  post 'group/:id/approve_member/:user_id' => 'groups#approve_member', as: :approve_member
  post 'group/:id/deny_member/:user_id' => 'groups#deny_member', as: :deny_member


  match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
  match 'auth/failure', to: redirect('/'), via: [:get, :post]
  match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 omniauth


    【解决方案1】:

    不是这个

    match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
    match 'auth/failure', to: redirect('/'), via: [:get, :post]
    match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
    

    试试这个

     get 'auth/:provider/callback' => 'sessions#create'
     get 'auth/failure' => redirect('/')
     get 'signout' => 'sessions#destroy', as: 'signout'
    

    【讨论】:

    • 嗨吉腾。我在其他地方看到过这个答案,但我不确定它是否适用于我,因为我没有使用 Devise gem。我没有“omniauthable”可以注释掉。
    • 感谢您删除说明的第二部分,但我仍然无法将行添加到我的初始化程序中。我创建了 config/initializers/omniauth.rb 并输入了你输入的代码,重启了 Rails 服务器,错误还是一样。
    • 请试试我放在答案框上的那个
    • 我找到了答案。 omn​​iauth.rb 初始化文件不知何故被删除(它在 .gitignore 中),所以我不得不重新创建该文件。不过谢谢。我赞成你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 2016-05-18
    相关资源
    最近更新 更多