【发布时间】:2016-06-21 20:15:03
【问题描述】:
我有一个 Rails 应用程序,用户可以使用 oauth 通过 facebook 登录。
我检索了他们的图片、电子邮件和姓名。我想做的是取消他们的个人资料链接(http://facebook.com/name)和性别(男、女、其他)
但它不适用于链接和性别,这是我的整合:
宝石文件
gem 'omniauth-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 # assuming the user model has a name
user.image = auth.info.image # assuming the user model has an image
user.gender = auth.info.gender # assuming the user model has a gender
user.link = auth.info.link # assuming the user modal has a link
end
end
def self.new_with_session(params, session)
super.tap do |user|
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
user.email = data["email"] if user.email.blank?
end
end
end
编辑
devise.rb
config.omniauth :facebook, "***", "***"
但对于所有用户,性别和链接返回“nil”
有什么我可能遗漏的想法吗?
谢谢
【问题讨论】:
-
尝试检查omniauth在认证后返回的
auth哈希值。查看哈希是否返回了值。如果不是,那将是因为该特定用户的隐私设置。 -
它返回 nil,但我尝试使用完全打开的配置文件,并且哈希也是 nil。但我认为链接值是公共配置文件的一部分,这意味着它不能被用户隐藏......无论他的个人资料多么私密。
-
您是否检查了返回的身份验证哈希?它的结构,以及如何存在其他字段等。
-
omniauth-facebook 文档描述了一个示例哈希,显示性别、链接信息不在
info键中,它嵌套在extra``raw-info键中:github.com/mkdynamic/omniauth-facebook#auth-hash
标签: ruby-on-rails ruby facebook oauth