2016-07-30 52 views
1

我正在使用omniauth-facebook寶石與devise在我的網站上設置Facebook登錄。我正在將Facebook用戶數據導入到我的數據庫中,但我遇到了一些奇怪的問題。如何將Facebook用戶數據轉換爲我的數據庫中的記錄?

這裏是我的方法用於導入數據:

#User.rb 

def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
    user.email = auth.info.email.to_s 
    user.password = Devise.friendly_token[0,20] 
    user.username = auth.info.name 
    end 
end 

我回來的記錄都有一個user.username等於Facebook的電子郵件,以及user.email是零。 auth.info.name(實際上是電子郵件地址)是我實際能夠恢復的唯一一塊Facebook用戶數據。其他一切都回來零。

有沒有其他人遇到過這個?

+0

你沒有標記你正在使用哪種語言... –

+0

@ASTEFANI良好的捕獲,它的鐵軌。 –

+0

@JoeMorano是我的帖子下面回答你的問題? – smefju

回答

2

爲什麼在first_or_create塊內使用user而不是member?在創建代碼片段時是否是打字錯誤?

無論如何,我認爲這個問題是針對存在於數據庫中的用戶。在這種情況下,傳遞給first_or_create方法的塊不進行評估(產量僅適用於新記錄),因此不更新字段。

請確保您在omniauth-facebook配置中指定了這些字段(或未指定名稱):https://github.com/mkdynamic/omniauth-facebook。它默認返回名稱和電子郵件。你也應該看看RailsCasts about Facebook Authentication

相關問題