2016-07-30 30 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

相关问题