Omniauth Custom rails路线

时间:2012-10-11 10:54:06

标签: ruby-on-rails ruby routes omniauth

我如何映射此动作

match '/auth/:provider/callback', to: 'sessions#create'

通过

调用
<b><%= link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in" %></b>

到login_path之类的路径或使用subURI?

我试过:“sessions #create”,如:“login”但是这个错误输出没有路由匹配的会话#create。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我相信你有点困惑。

您所谈论的这条路线是用户在 OmniAuth与第三方服务(例如Facebook)通信后返回的回调。因此,使用:as选项命名此路线毫无意义(尽管你可以)。

您要编辑的内容(如果我了解您)是用户点击登录的网址,因此它看起来不像http://example.com/auth/facebook,但看起来像http://example.com/login

这只是一个静态网址(/ auth / facebook)所以你可以像这样重定向它:

match "/login" => redirect("/auth/github")

如果用户可见的网址与您无关,但您只想在视图中对其进行简化,例如:

<b><%= link_to "Sign in with Facebook", sign_in, id: "sign_in" %></b>

您可以在帮助器中定义此方法(例如ApplicationHelper.rb):

def login_link
  "/auth/facebook"
end

虽然我没有看到任何特别的理由这样做。

答案 1 :(得分:1)

match '/auth/:provider/callback' => 'sessions#create'

如果您希望/auth/twitter(:provider)/callback =&gt;中的SessionsController结束,上述路由代码会对您有所帮助create行动