Rails: la récupération de l'image de Facebook après Omniauth la connexion avec Concevoir

J'ai installé Facebook connexion avec Concevoir et omniauth avec ces instructions https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

Le Concevoir wiki donne des instructions pour l'obtention de facebook info à partir de la table de hachage stockée dans cette variable request.env['omniauth.auth'] Voir en bas pour le hachage.

Par exemple, Concevoir wiki est de ces deux méthodes pour la User.rb modèle

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.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
  end
end

def self.new_with_session(params, session)
    super.tap do |user|
      if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
        user.email = data["email"]

      end
    end
  end

Donc, en utilisant le hachage ci-dessous, j'ai ajouté la suite de ces deux méthodes pour obtenir le nom et l'image

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.create!(:email => data.email, :password => Devise.friendly_token[0,20], :name => data.name, :image => access_token.info.image) #I added access_token.info.image based on first answer
  end
end

def self.new_with_session(params, session)
    super.tap do |user|
      if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
        user.email = data["email"]
        user.name = data["name"]
        user.image = access_token.info.image  #i changed this based on first answer below

      end
    end
  end

Alors de mon point de vue, j'ai ajouté ce qui suit pour afficher le nom de l'utilisateur et de l'image

<p>Name:<%= user.name %></p>
 <p>Image: <%= image_tag user.image %>

Cependant, seul le nom est à l'affiche. Pas d'image.

Dans ma base de données, j'ai un name et un image colonne. Le nom de Facebook est stockée, mais l'image de la colonne dit "nil"

Des idées comment je peux obtenir l'image à travailler?

Hash stocké dans request.env['omniauth.auth'] https://github.com/mkdynamic/omniauth-facebook/blob/master/lib/omniauth/strategies/facebook.rb#L31-47

   info do
        prune!({
          'nickname' => raw_info['username'],
          'email' => raw_info['email'],
          'name' => raw_info['name'],
          'first_name' => raw_info['first_name'],
          'last_name' => raw_info['last_name'],
          'image' => "#{options[:secure_image_url] ? 'https' : 'http'}://graph.facebook.com/#{uid}/picture?type=square",
          'description' => raw_info['bio'],
          'urls' => {
            'Facebook' => raw_info['link'],
            'Website' => raw_info['website']
          },
          'location' => (raw_info['location'] || {})['name'],
          'verified' => raw_info['verified']
        })
      end
InformationsquelleAutor Leahcim | 2012-03-24