通过OmniAuth Facebook获取注册数据

时间:2014-12-09 18:51:15

标签: ruby-on-rails ruby facebook-graph-api omniauth

this guide之后,我能够在我的rails应用程序中使用一个简单的身份验证系统与Devise和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
    user.password = Devise.friendly_token[0,20]
    user.name = auth.info.name
    user.image = auth.info.image 
    user.location = auth.info.user_location 
    user.about = auth.info.user_about_me 
    user.website = auth.info.user_website


  end
end

我已将名称,图片,位置,关于网站添加到我的数据库中的用户表中。

当用户注册,位置,关于,网站都返回零。 如何获取这些属性?我用auth.info.user_location,auth.info.user_location和auth.info.user_website调用了错误的方法吗?

2 个答案:

答案 0 :(得分:1)

user_location中配置Omniauth-Facebook时,您需要明确要求user_about_meuser_websiteconfig/initializers/devise.rb的权限,如下所示:

config.omniauth :facebook, "APP_ID", "APP_SECRET",
                scope: 'user_location,user_about_me,user_website'

此外,您需要从Omniauth-Facebook gem README查看示例Auth Hash以查看响应的进展情况

有关权限的详情,请参阅Facebook Permissions参考页。

答案 1 :(得分:0)

auth哈希仅返回this个大部分信息。通过在omniauth.rb中的配置范围中提及,可以提供您需要的那些额外信息。 see the options in the configurations