OmniAuth的起源 - / auth / facebook在哪里调用

时间:2012-02-10 23:08:58

标签: ruby-on-rails request omniauth

我使用OmniAuth作为一种让用户将社交网络链接到系统的方法。所以我的路线中有共同的匹配'/auth/:provider/callback', to: 'authentications#create'

这很好,我将特定用户的信息存储在表格中。但是,我有另一种使用OmniAuth的方法,它不应该与这个重叠。用户可以使用/ auth / facebook的调用登录系统,因此我不应该只将该信息存储到authentications表中,还应该将用户登录到系统中。

另一方面,登录的用户可能只想在不登录的情况下链接他/她的Facebook帐户,但是呼叫将在同一/auth/facebook进行。所以我的问题是:我怎样才能发现对auth/facebook的调用是从哪里完成的?

1 个答案:

答案 0 :(得分:0)

一个想法是在您的身份验证控制器中有一个before_filter,它只是检查用户是否已登录。 #sign_in?可能看起来像这样:

def sign_in?
 if @oauth.provider == 'facebook'
   if current_user?
     # then lets associate this facebook credentials with the logged-in user.
   else
     # user isn't logged in, so let's do that
     sign_in(@authentication.account)
   end
 end
end