【发布时间】:2020-01-04 02:46:48
【问题描述】:
我正在尝试将 Facebook 个人资料图片与 Devise 一起使用,并通过 CarrierWave/fog 将其上传到 S3,但我从 Facebook 获得的auth.info.image 中提供的链接是下载文件的链接,而不是图片CarrierWave 可以使用。
如果您在浏览器中访问该链接,则该链接是文件下载链接。我在任何地方都没有看到任何解决这个问题的文章。我以为我可以使用 CarrierWave 将文件下载到/tmp,然后上传,但调用CarrierWave::Uploader::Download 不起作用。或者我看到其他文章解释说您可以保存 Facebook 提供的链接,只需在 = image_tag 中使用它,但这也不起作用。
在我的User 模型中:
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create! do |user|
user.email = auth.info.email
user.provider = auth.provider
user.first_name = auth.info.first_name
user.last_name = auth.info.last_name
user.uid = auth.uid
user.password = Devise.friendly_token[0, 20]
user.password_confirmation = user.password
user.profile_image = auth.info.image
end
end
但user.profile_image 是nil。我对 CarrierWave 没有任何问题 - 我已经在其他几个项目中使用它来使用雾保存到 AWS。
我想要 a) 保存一个指向我可以在 Rails 视图中使用的图像的链接,但如前所述,我没有那个 - Facebook 返回的链接是一个下载图像的链接,所以, b) 是下载文件,将文件名保存到User模型并上传文件到AWS。
【问题讨论】:
标签: ruby facebook devise ruby-on-rails-5 carrierwave