通过 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 %>
我正在使用 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 %>