我在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)
答案 0 :(得分:2)
猜猜我应该将我的评论转换成答案:
对于我们的应用程序,我们正在使用backbone / marionette进行纯json api的事情。为了让oAuth与设计合作 - 我从设计中删除了它。 :)删除了我设置的omniauthable属性,并从我的initializers / devise.rb中删除了omniauth设置。然后在omniauth页面上阅读我自己实现它。
我的api生活在“/ api / v1”
之下您的实施可能会有所不同,但我处理我的oAuth帐户的方式是将它们放在自己的表格中(Twitters,Facebook等),然后将它们链接到我的设计用户。这样我可以关联多个帐户,用户可以使用其中任何一个登录。
另外,请务必将您的twitter / facebook回调设置为:
http://127.0.0.1:3000/api/v1/auth/twitter/callback
匹配您在开发区的路线。
希望这有助于他人。如果我忘记了一步或你迷路了,请问。