Rails:facebook oauth:获取用户个人资料链接

时间:2016-06-21 20:15:04

标签: ruby-on-rails ruby facebook oauth

我有一个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'

我可能遗失的任何想法?

由于

2 个答案:

答案 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是否会向您提供您要求的所有数据是一个不同的问题。