2012-02-10 55 views
0

我使用OmniAuth作爲一種讓用戶將其社交網絡鏈接到系統的方式。所以我在我的路線中有共同的匹配'/auth/:provider/callback', to: 'authentications#create'OmniAuth的由來 - /從哪個/ auth/facebook撥打電話

這很好,我將一個特定用戶的信息存儲在一張表中。但是,我有另一種使用OmniAuth的方法,它不應該與這一個重疊。用戶可以使用/ auth/facebook的呼叫登錄系統,因此我不應該只將這些信息存儲到認證表中,還可以將用戶登錄到系統中。

另一方面,登錄的用戶可能只想在未登錄的情況下鏈接他/她的Facebook帳戶,但呼叫將完成到相同的/auth/facebook。所以我的問題是:如何才能發現auth/facebook的呼叫是從哪裏完成的?

回答

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 
+0

這是一個好主意。這裏唯一的事情是我處理Facebook註冊另一個控制器的另一個行動。我再看看吧。 – Nobita 2012-02-10 23:46:26