首页 > 解决方案 > 如何接收非通用 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/

标签: ruby-on-railsrubyomniauthomniauth-facebook

解决方案


升级到 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


推荐阅读