加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Facebook Omniauth Carrierwave简介图片

发布时间:2020-12-17 04:37:41 所属栏目:百科 来源:网络整理
导读:我有一个用户Devise Omniauth允许用户通过Facebook注册的应用程序.我还使用Carrierwave允许用户上传他们自己的个人资料图像并处理从Facebook请求的图像.因此,我在控制器和用户模型中具有以下功能: user.rb def self.find_for_facebook_oauth( data,signed_i
我有一个用户Devise Omniauth允许用户通过Facebook注册的应用程序.我还使用Carrierwave允许用户上传他们自己的个人资料图像并处理从Facebook请求的图像.因此,我在控制器和用户模型中具有以下功能:

user.rb

def self.find_for_facebook_oauth( data,signed_in_resource=nil)
user = User.where(:email => data.info.email).first
unless user
  params =
    {  
      :user =>
      {
        :username => data.uid,:email => data.info.email,:password => Devise.friendly_token[0,20],:user_profile_attributes => 
          {
            :first_name => data.info.first_name,:last_name => data.info.last_name,:remote_image_url => data.info.image
          },:user_auths_attributes =>
        [{
          :uid => data.uid,:provider => data.provider
        }]
      }
    }
    user = User.create!(params[:user])
end
return user
end

omn??iauth_callbacks_controller.rb

def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"])

if @user.persisted?
  sign_in_and_redirect @user,:event => :authentication #this will throw if @user is not activated
  set_flash_message(:notice,:success,:kind => "Facebook") if is_navigational_format?
else
  session["devise.facebook_data"] = request.env["omniauth.auth"]
  redirect_to new_user_registration_url
end
end

不幸的是,我一直遇到这个错误:

ActiveRecord::RecordInvalid (Validation failed: User profile image could not download file: redirection forbidden: http://graph.facebook.com/813865346/picture?type=square -> https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t5.0-1/1118622_813865346_1465272585_q.jpg):
app/models/user.rb:68:in `find_for_facebook_oauth'
app/controllers/users/omniauth_callbacks_controller.rb:4:in `facebook'

第68行是user = User.create!(params [:user])

记录params [:user]提供以下值:

Params: {:username=>"*",:email=>"*",:password=>"iePVLt7XEWk4YwPjja6n",:user_profile_attributes=>{:first_name=>"*",:last_name=>"*",:remote_image_url=>"http://graph.facebook.com/*/picture?type=square"},:user_auths_attributes=>{:uid=>"*",:provider=>"facebook"}}

我希望得到一些帮助来解决这个错误.

解决方法

我遇到了同样的问题.似乎问题是http重定向到https.所以我用gsub替换它们如下:
user.remote_avatar_url = auth.info.image.gsub('http://','https://')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读