通过 rails oath 导入 facebook 个人资料图片

Import facebook profile image via rails oath

我正在使用 oath facebook gem 对我的应用程序中的用户进行身份验证:https://omr-altijdheerlijk.herokuapp.com/ 目前正在运行。

我还在我的应用程序的用户帐户中添加了名称和图像字段。名称字段会自动填充来自 facebook 的用户名。现在,我还尝试通过 Facebook 的身份验证将用户的个人资料图片从 Facebook 导入到 rails 中的帐户。这不起作用,请参阅下面的代码:

我的user.rb文件

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :omniauthable, :omniauth_providers => [:facebook]

has_many :pins

def self.from_omniauth(auth)
  where(provider2: auth.provider, uid2: auth.uid).first_or_create do |user|
    user.provider2 = auth.provider
    user.uid2 = auth.uid
    user.email = auth.info.email
    user.name = auth.info.name
    user.image = auth.info.image
    user.password = Devise.friendly_token[0,20]
  end
end

has_attached_file :image, :styles => { :medium => "300x300>", :square => "200x200>", :thumb => "100x100>" }, :default_url => "/images/:style/default.jpg"
end

我的应用控制器

class ApplicationController < ActionController::Base
 # Prevent CSRF attacks by raising an exception.
 # For APIs, you may want to use :null_session instead.
before_action :authenticate_user!

protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?

protected

  def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :image, :email, :password,    :password_confirmation, :current_password) }
  devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:name, :image, :email, :password, :password_confirmation, :current_password) }
  devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :image, :email, :password, :password_confirmation, :current_password) }
  end

 end

顺便说一句,我还使用 Devise(用于常规登录)和 Paperclip、ImageMagic 和 Amazon S3 来上传和存储图像。

任何人都可以帮助我做错了什么吗?

感谢您的帮助。看来我更进了一步。我想现在正在导入来自 facebook 的图像。但是,该图像尚未显示在我的视图中。我的视图中有以下代码

 <%= link_to image_tag(user.image.url(:medium)), user %>

当我查看 HTML 时,我看到以下 link 图像: http://s3.amazonaws.com/altijdheerlijk/users/images/000/000/019/medium/http://graph.facebook.com/10152500285363157/picture?type=square

你应该

user.image_file_name = auth.info.name

然后在您看来:

<%= link_to image_tag(user.image_file_name), user %>