Rails 5: Как получить public_profile, user_location и user_status через omniauth FB на Devise

У меня есть приложение Rails 5, использующее Facebook Omniauth на Devise, и я хочу получить информацию о public_profile пользователя, такую ​​как first_name, last_name, age_range, link, gender, locale, verified, user_location, and user_status в мой Users Таблица. Прямо сейчас, он получает электронную почту только при использовании настроек Devise по умолчанию:-

# 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.username = auth.info.name
  user.photo = auth.info.image
  user.skip_confirmation!
  user.save

# devise.rb
config.omniauth :facebook, '..', '..', image_size: 'large'

Я пытался редактировать эти файлы, чтобы получить подробную информацию, но это не работает:-

# devise.rb
config.omniauth :facebook, '..', '..', image_size: 'large', scope: 'email, public_profile, user_location, user_status', info_fields: 'first_name, last_name, gender, age_range, etc.'

# user.rb
  user.first_name = auth.extra.raw_info.first_name
  user.last_name = auth.extra.raw_info.last_name
  user.age_range = auth.extra.raw_info.age_range
  user.gender = auth.extra.raw_info.gender
  user.address = auth.info.user_location
  user.status = auth.info.user_status

Я не знаю, как правильно написать выше, чтобы заставить их работать. У меня есть разрешение на получение user_location а также user_status

0 ответов

Другие вопросы по тегам