我有一个rails应用程序,用户可以使用oauth登录facebook。
我检索他们的图片,电子邮件和姓名。我想要做的是废弃他们的个人资料链接(http://facebook.com/name)和性别(男性,女性,其他)
但它对链接和性别没有用,这是我的整合:
的Gemfile
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, "***", "***"
但对于所有用户,性别和链接返回&nbsp'
我可能遗失的任何想法?
由于
答案 0 :(得分:1)
url
参数现在不起作用,字段的正确名称为link
config.omniauth :facebook, 'APP_ID', 'APP_SECRET', {scope: 'email', info_fields: 'email,name,verified,gender,link'}
我们可以从Facebook获得一系列属性:
https://developers.facebook.com/docs/facebook-login/permissions/v2.5#reference-public_profile
https://developers.facebook.com/docs/graph-api/reference/user
答案 1 :(得分:0)
在config / initializers / devise.rb中指定提供程序时,需要指定要获取的范围和字段
即:
config.omniauth :facebook, 'APP_ID', 'APP_SECRET', {scope: 'email', info_fields: 'email,name,verified,gender,url'}
Facebook是否会向您提供您要求的所有数据是一个不同的问题。