Omniauth Facebook的手册Rails的路线(Omniauth Facebook Man

2019-08-03 18:04发布

我想在Rails 3应用程序使用Facebook的Omniauth两种色器件型号。 目前,这不是一件可以使用omniauthable和色器件助手。

类似的问题回答了如何做到这一点:

Omniauth“与” STI和设计

”从devise.rb ..move您omniauth配置omniauth.rb并创建自己的omniauth路线“。

但我有在确定这些路线和助手麻烦,即对于Facebook我曾经有一项帮助是这样的:

user_omniauth_authorize_path(:facebook) 

..这重定向到Facebook和再放入我在devise_for范围内建立一个回调URL。

将我的路线/助手模样的omn​​iauth Facebook的策略是什么,如果手动设置?

我已经有omniauth,Facebook和设计很好地为前“用户”模式工作,所以我有不同

@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user, params[:state])

..parts准备好了,但现在有两个型号。 我只是具有更换色器件的助手我觉得麻烦。

Answer 1:

你的链接应该像这样的:

<%= link_to "Sign in with Facebook", "/auth/facebook" %>

您还可以创建一些回调路线,有2种方法可以做到这一点。 您可以:

  1. 定义捕获所有回调和重定向到一个控制器的行动路线:

     get "/auth/:provider/callback" => "authentications#create" 

    然后,您可以使用params[:provider]获得供应商的名称。 使用的if你能那么做不同的事情取决于供应商。

  2. 或定义为每一个供应商,你可以指出您的控制器不同的行动路线:

     get "/auth/twitter/callback" => "authentications#twitter" get "/auth/facebook/callback" => "authentications#facebook" 

    这些路由也可以在一个单一的路线凝结:

     get "/auth/:action/callback", :to => "authentications", :constraints => { :action => /twitter|facebook/ } 

    然后,您需要定义这些操作。 在Twitter的动作,你可以获取用户的微博和Facebook的行动,你可以获取用户的帖子,例如。

另外,不要忘记创建failure的行动来处理其中一个用户不授权具有一定的供应商登录的情况。

现在,你会碰到一个问题。 你如何找出链接应指向? 对于Twitter和Facebook,似乎很明显( /auth/twitter/auth/facebook ,分别)。

但是,如果你用的是什么omniauth-google-oauth2宝石使用Google+登入? 你唯一的希望是每个omn​​iauth宝石( 这里列出 )有一些很好的文档。

在任何情况下,如果你不知道你应该使用,或者如果你根本不喜欢按一定的宝石使用的URL网址,你可以随时改变它!

例如,URL /auth/google_oauth2肯定是不漂亮,至少比Facebook的和Twitter的网址。 要更改网址,使用name选项。

# omniauth.rb, when using pure omniauth
provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'],
  {
    name: 'google'
  }

# devise.rb, when using omniauth+devise
config.omniauth :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'],
  {
    name: 'google',
  }

现在你可以使用url /auth/google ,好多了。

注:我做了一个几参考AuthenticationsController但也许你拥有的是一个CallbacksControllerOmniauthCallbacksController ,它其实并不重要,你们怎么称呼它。



文章来源: Omniauth Facebook Manual Rails Routes