Как сохранить имя в Facebook с помощью omniauth and devise - PullRequest
1 голос
/ 08 сентября 2011

Я пытаюсь сохранить имя пользователя Facebook при сохранении этого пользователя, но, похоже, не могу.Я следовал инструкциям на devise github , и интеграция с Facebook работает нормально;электронная почта пользователя сохраняется, как и следовало ожидать.Тем не менее, я не могу понять, как сохранить имя пользователя.Прямо сейчас я делаю это:

  def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
    data = access_token['extra']['user_hash']
    if user = User.find_by_email(data["email"])
      user
    else # Create a user with a stub password.
      User.create(:email => data["email"], :name => data["name"], :password => Devise.friendly_token[0,20]) 
    end
  end

, но это не работает.Я что-то не так делаю?

Ответы [ 2 ]

4 голосов
/ 29 января 2012

Похоже, что схема хеш-аутентификации сильно изменилась: https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token.extra.raw_info
  if user = User.where(:email => data.email).first
    user
  else
    # Create a user with a stub password. 
    user = User.create!(:username => data.username ? data.username : data.nickname , :email => data.email, :password => Devise.friendly_token[0,20])
  end
end
0 голосов
/ 08 сентября 2011

Имя пользователя хранится в:

auth = request.env['omniauth.auth']  #I think this is what your access_token variable equates to.
auth['user_info']['name']

Если это не то, что вам нужно, я предлагаю вам проверить содержимое access_token.

...