0

Я использовал stackoverflow уже более года и всегда нашел ответ, выполнив поиск. Тем не менее, я не мог найти ответ на эту проблему, поэтому на этой неделе мой первый вопрос:Rails 4 Facebook authentication - дополнительная информация

Я последовал за Ryan Bates RailsCast # 360 о том, как аутентифицировать пользователя в Rails, используя драгоценный камень omniauth-facebook, и после поиска вокруг в течение долгого времени удалось адаптировать его для Rails 4.

К сожалению, когда я пытаюсь расширить его программу, вытащив имя first_name и last_name, которое (должно быть?) отправлено вместе с другими деталями в хэше , Я не могу заставить его работать. Мне удалось получить адрес электронной почты в другой программе и даже изображение, но first_name и last_name не отправляются. Я получаю следующее, когда я вернулся в raise request.env["omniauth.auth"].to_yaml сессий # создать

--- !ruby/hash:OmniAuth::AuthHash 
provider: facebook 
uid: '105531523151136' 
info: !ruby/hash:OmniAuth::AuthHash::InfoHash 
name: Donna Alajhbhfedabi Bushakwitz 
image: http://graph.facebook.com/105531523151136/picture 
... 

Вот мой omniauth.rb инициализатор

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, FACEBOOK_CONFIG['app_id'], FACEBOOK_CONFIG['secret'] 
end 

И мой user.rb файл:

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

Любая помощь будет Великий. Я пытался выяснить, что не так за последние 3 дня.

ответ

0

Просто добавьте эту строку в инициализаторе:

info_fields: 'first_name, last_name' 
+0

Спасибо! Это сработало, но мне также пришлось перезапустить сервер. Думаю, я пробовал это вчера, но не перезапустил сервер (и, возможно, в моем коде тоже были некоторые ошибки). Но еще раз спасибо! – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^