在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调用了错误的方法吗?
答案 0 :(得分:1)
在user_location
中配置Omniauth-Facebook时,您需要明确要求user_about_me
,user_website
和config/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