如何接收非通用的Facebook个人资料图片?

问题描述

我现在正在接收该个人资料图片,我没有更改我的配置中的任何内容(以前工作正常,并且该用户是我,并且我有个人资料图片)。

generic facebook profile image

# 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