ruby-on-rails-3 - 以omniauth命名的Rails路由

标签 ruby-on-rails-3 devise routes omniauth

我在 routes.rb 中有这个:

namespace :api do
  namespace :v1 do
    ...
    devise_for :users, constraints: { format: :json },
      :controllers => { :omniauth_callbacks => "auths" }
    ...
  end
end

并生产以下路线:
new_api_v1_user_confirmation GET        /api/v1/users/confirmation/new(.:format)          api/v1/confirmations#new {:format=>:json}
                             GET        /api/v1/users/confirmation(.:format)              api/v1/confirmations#show {:format=>:json}
api_v1_user_omniauth_authorize            /users/auth/:provider(.:format)                   auths#passthru {:provider=>/facebook|twitter|linkedin/, :format=>:json}
api_v1_user_omniauth_callback            /users/auth/:action/callback(.:format)            auths#(?-mix:facebook|twitter|linkedin) {:format=>:json}

如何获得命名空间的最后两条路由,例如:
/api/v1/auth/:provider(.:format)
/api/v1/auth/:provider/callback(.:format)

最佳答案

我想我应该将我的评论转换为答案:

对于我们的应用程序,我们正在使用 Backbone /木偶做纯 json api 的事情。为了让 oAuth 与设计一起工作 - 我从设计中删除了它。 :) 删除了我设置的omniauthable 属性,并从我的初始化程序/devise.rb 中删除了omniauth 设置。然后在omniauth页面上阅读我自己实现了它。

我的 api 位于“/api/v1”下

  • 创建了列出我的提供者和 key 的初始化程序/omniauth.rb 文件。对于每个提供者,我还给了它一个 :path_prefix=>"/api/v1/auth"属性。
  • 在我的 api 中创建一个名为 api/v1/oauth_controller.rb 的回调 Controller ,它使用模块正确命名,并包含来自服务的回调路径。
  • 更新了我的路线以设置全能的回调路线。见这里:gist.github.com/DaveSanders/5835642
  • 在 OAuthController.create 中,我使用了来自提供者的详细信息,并完成了“社交网络用户是否存在并拥有映射帐户?”的基本流程。如果是这样,请通过设计的 user.sign_in 登录?如果没有,请创建用户然后登录。
  • 重定向回我的应用程序,然后再次启动主干,然后可以获取登录的用户详细信息并根据需要使用它们。

  • 您的实现可能会有所不同,但我处理我的 oAuth 帐户的方式是将它们放在自己的表(Twitter、Facebook 等)中,然后将它们链接到我的设计用户。这样,我可以关联多个帐户,并且用户可以使用其中任何一个帐户登录。

    此外,请务必将您的 twitter/facebook 回调设置为:
    http://127.0.0.1:3000/api/v1/auth/twitter/callback
    以匹配您在开发中的路线。

    希望这对其他人有帮助。如果我忘记了一个步骤或者你迷路了,请询问。

    关于ruby-on-rails-3 - 以omniauth命名的Rails路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15756523/

    相关文章:

    ruby-on-rails - "omniauth-twitter"电子邮件 ID 未从 ruby​​ on rails 中的 Twitter 获取

    ruby-on-rails - 性能:最小化数据库命中

    ruby-on-rails - ActiveModel::ForbiddenAttributesError 使用设备进行注册时

    ruby-on-rails - 覆盖设计 SessionsController 销毁

    Ajax 调用 Laravel 路由

    ruby-on-rails - 使用Rails 3和Haml 3,如何配置Haml?

    ruby-on-rails - 在私有(private) Controller 方法中返回 redirect_to

    ruby-on-rails - 设计 gem 跳过确认和同时通过电子邮件跳过确认

    ruby-on-rails-3 - 如何确保用户名不会与现有路由冲突?

    ruby-on-rails-3 - rails 通过 :id or :name 路由可选参数类型