Как получать нестандартные изображения профиля Facebook?

#ruby-on-rails #ruby #omniauth #omniauth-facebook

#ruby-on-rails #ruby #omniauth #omniauth-facebook

Вопрос:

сейчас я получаю это изображение профиля, я ничего не менял в своей конфигурации (раньше все работало нормально, и этот пользователь — я, и у меня есть изображение профиля).

общее изображение профиля facebook

 # 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 /

Ответ №1:

Обновление до ominauth-facebook 8.0.0 (с 7.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