Rails Facebook — не удается получить дополнительную информацию о пользователе

#ruby-on-rails #ruby #facebook

#ruby-on-rails #ruby #Facebook

Вопрос:

моя цель — получить локализацию пользователя. Я использую:

 gem 'koala'
gem 'omniauth-facebook'
  

Это моя конфигурация devise.rb

   config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET'],
                  scope: ['email', 'user_location'],
                  callback_url: ENV['FB_CALLBACK_URL'],
                  info_fields: 'email, first_name, last_name, name, location'
  

В моем методе OmniauthCallbacksController controller in facebook я хочу создать пользователя и назначить ему локализацию.

   @user = User.from_omniauth(request.env['omniauth.auth'])
  @oauth = Koala::Facebook::OAuth.new(ENV['FB_APP_ID'], ENV['FB_APP_SECRET'], ENV['FB_CALLBACK_URL'])
  @graph = Koala::Facebook::API.new(@user.omni_auth_settings.first.access_token)
  

К сожалению facebook API по-прежнему возвращает только следующие данные:

 => {"provider"=>"facebook",
 "uid"=>"1091157110258285",
 "info"=>
  {"email"=>"wfhllalscu_1552944302@tfbneew.net",
   "name"=>"Emma Alcdgiehdgbgb Fergiesen",
   "first_name"=>"Emma",
   "last_name"=>"Fergiesen",
   "image"=>"http://graph.facebook.com/v2.10/1091157110258285/picture"},
 "credentials"=>
  {"token"=>
    "EAAEobjagyisBAFKrkigZA4p09xvxVOKK41LbPEHKFASCGrz0f5ZCIgwwdjBq1UPf5jvkmdzjhnytZAKVwDb4MrrzWvkC0y1LLJ8RZCpKcA4tTHty3pGxjFvoKzqb5RLYUvSP1Y5GL0A09ZClM5FsEX464sVnmKXXi6Bg4F0qbAYikFFNFQifsQ",
   "expires_at"=>1558216434,
   "expires"=>true},
 "extra"=>
  {"raw_info"=>{"email"=>"wfhllalscu_1552944302@tfbnw.net", "first_name"=>"Emma", "last_name"=>"Fergiesen", "name"=>"Emma Alcdgiehdgbgb Fergiesen", "id"=>"1091157110258285"}}}
  

Когда я запрашиваю напрямую /me , я все еще не получаю дату рождения и локализацию.

 [6] pry(#<Users::OmniauthCallbacksController>)> @graph.get_object("me")
=> {"name"=>"Emma Alcdgiehdgbgb Fergiesen", "id"=>"1091157110258285"}
  

Этим пользователям предоставляются привилегии. Я понятия не имею, почему я не могу получить эти данные.
Есть идеи?

Комментарии:

1. Вы должны запросить нужные поля

2. Можете ли вы привести пример?

3. Указание info_fields уже должно это сделать. (Если вы сделали этот запрос / me, который вы упомянули в конце самостоятельно, за пределами omniauth, вам нужно указать их с помощью fields параметра.)