问题描述
我现在正在接收该个人资料图片,我没有更改我的配置中的任何内容(以前工作正常,并且该用户是我,并且我有个人资料图片)。
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider(
:facebook,ENV.fetch("FACEBOOK_APP_ID"),ENV.fetch("FACEBOOK_APP_SECRET"),image_size: :large,)
end
# app/controllers/sessions_controller.rb
def facebook
uid = auth_hash["uid"]
email = auth_hash["info"]["email"]
image_url = auth_hash["info"]["image"]
name = auth_hash["info"]["name"]
first_name = name.split.first
# ...
attach_image_from_url(@user,image_url)
# ...
end
private
def auth_hash
request.env["omniauth.auth"]
end
def attach_image_from_url(user,image_url)
# return if user.image.attached?
image = Down.download(image_url)
user.image.attach(io: image,filename: "image.jpg")
end
我想念的东西吗?
编辑:我尝试将api版本设置为7.0(当时是4.0),并且/ picture端点似乎已消失https://developers.facebook.com/docs/graph-api/changelog/version4.0/
解决方法
从7.0.0升级到ominauth-facebook 8.0.0并设置secure_image_url: true
对其进行了修复
Rails.application.config.middleware.use OmniAuth::Builder do
provider(
:facebook,ENV.fetch("FACEBOOK_APP_ID"),ENV.fetch("FACEBOOK_APP_SECRET"),image_size: :large,secure_image_url: true,)
end
没有secure_image_url: true
时出现500错误,请参阅https://github.com/simi/omniauth-facebook/pull/346