Omniauth Facebook сфера только получить электронную почту

Я хочу иметь возможность доступа к информации о сфере действия. Единственное, к чему я могу получить доступ - это информация электронной почты, которая вставляется в базу данных. Я обнаружил, что user_birthday действителен, но когда я вхожу в систему, он не получит его. Может ли кто-нибудь также сказать мне, как посмотреть, какую информацию Facebook отправляет в сферу

Нужна помощь здесь.

ApplicationController

helper_method :current_user

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

OmniAuth.rb (путь = конфигурация / инициализаторы /)

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'xxxxxxxxx', 'xxxxxxxxx',
    :scope => "email, user_birthday", 
    :display => 'popup',
    :client_options => {
    :site => 'https://graph.facebook.com/v2.0',
    :authorize_url => "https://www.facebook.com/v2.0/dialog/oauth"
}

end

драгоценный файл

gem 'omniauth'
gem 'omniauth-facebook', '~> 1.4.1'

user.rb (путь = модели /)

class User < ActiveRecord::Base
  def self.from_omniauth(auth)
  where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
    user.provider = auth.provider
    user.uid = auth.uid
    user.name = auth.info.name
    user.oauth_token = auth.credentials.token
    user.oauth_expires_at = Time.at(auth.credentials.expires_at)
    user.email = auth.info.email
    user.birthday = auth.info.user_birthday
    user.save!
  end
end

    def largeimage
        "http://graph.facebook.com/#{self.uid}/picture?type=large"
    end
    def normalimage
        "http://graph.facebook.com/#{self.uid}/picture?type=normal"
    end


end

таблица пользователей

create_table "users", force: true do |t|
    t.string   "provider"
    t.string   "uid"
    t.string   "email"
    t.string   "birthday"
    t.string   "name"
    t.string   "oauth_token"
    t.datetime "oauth_expires_at"
    t.datetime "created_at"
    t.datetime "updated_at"
end

и когда я смотрю на журнал базы данных, это то, что я получаю

----------- журнал базы данных -----------------------

User Load (0.1ms)  SELECT  "users".* FROM "users"  WHERE "users"."provider" = 'facebook' AND
"users"."uid" = 'xxxxxxxx'  ORDER BY "users"."id" ASC LIMIT 1
(1.4ms)  begin transaction
SQL (1.2ms)  INSERT INTO "users" ("created_at", "email", "name", "oauth_expires_at",
"oauth_token", "provider", "uid", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)  [["created_at", 
"2014-12-12 12:11:38.281524"], ["email", "xxxxxx@gmail.com"], ["name", "Cyrus Zei"], 
["oauth_expires_at", "2015-02-10 11:51:00.000000"], ["oauth_token", "xxxxxxxxxxxxxx"], 
["provider", "facebook"], ["uid", "xxxxxxxxxxx"], ["updated_at", "2014-12-12 12:11:38.281524"]]
(13.2ms)  commit transaction
(0.1ms)  begin transaction
(0.0ms)  commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 38ms (ActiveRecord: 16.4ms)

------------- журнал базы данных ---------------------

Я хочу иметь возможность использовать current_user.birthday любую помощь здесь?

Спасибо

1 ответ

Попробуйте указать после области видимости, опцию info_fields, как показано ниже:

# Configuration option using Devise with omniauth-facebook.
config.omniauth :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], scope: "email, public_profile, user_birthday, user_location", info_fields: 'id, name, first_name, middle_name, last_name, age_range, link, gender, locale, timezone, updated_time, verified, email, birthday, location'
Другие вопросы по тегам