2014-01-16 39 views
0

我使用Facebook,omniauth寶石在單一用戶登錄user.rb下面的代碼:是否可以使用omniauth-facebook rails gem保存多個用戶?

def self.from_omniauth(auth) 
where(auth.slice(:provider, :fb_id)).first_or_initialize.tap do |user| 
    user.provider   = auth.provider 
    user.fb_id    = auth.uid 
    user.name    = auth.info.name 
    user.first_name  = auth["info"]["first_name"] unless auth["info"].blank? 
    user.last_name   = auth["info"]["last_name"] unless auth["info"].blank? 
    user.picture_url  = auth.info.image 
    user.email    = auth.info.email 
    user.oauth_token  = auth.credentials.token unless auth["info"].blank? 
    user.location   = auth.info.location unless auth["info"].blank? 
    user.save! 
end 

我想建立多個Facebook用戶的用戶帳戶。當我登錄它的罰款,但是當另一個人登錄時,該應用會替換我的用戶實例。有沒有辦法讓這個寶石建立用戶帳戶?

謝謝!

+0

嗯 - 我對這個問題有點困惑。你能舉一個你想要做什麼的例子嗎? – wyclin

+0

我是否需要像Devise這樣的用戶管理寶石才能擁有多個用戶使用Facebook Omniauth?看起來總是隻有一個用戶,他們最後登錄過。 – j0e

+0

我想要做的是當另一個用戶登錄時,它們保存在用戶數據庫中,而不是覆蓋第一個用戶。這足以證明@wyclin嗎? – j0e

回答

0

的解決辦法是在第二行:where(auth.slice(:provider, :fb_id))

我改變它:uid寫到:fb_id匹配一切都在我的所有其他表其他的Facebook的ID,但檢查auth哈希我意識到後:根本沒有發現fb_id,因此沒有產生任何新的用戶。

我改名爲我的用戶fb_id列回uid,現在收集新用戶正確:

def self.from_omniauth(auth) 
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| 
     user.provider   = auth.provider 
     user.uid    = auth.uid 
     user.name    = auth.info.name 
     user.first_name  = auth["info"]["first_name"] unless auth["info"].blank? 
     user.last_name   = auth["info"]["last_name"] unless auth["info"].blank? 
     user.picture_url  = auth.info.image.sub("square", "large") 
     user.email    = auth.info.email 
     user.oauth_token  = auth.credentials.token unless auth["info"].blank? 
     user.location   = auth.info.location unless auth["info"].blank? 
     user.save! 
    end 
    end 
相關問題