【问题标题】:Get image name from Facebook image url从 Facebook 图片 url 获取图片名称
【发布时间】:2012-01-04 12:32:25
【问题描述】:

当用户通过 Facebook 登录时,我想使用 Facebook 个人资料图片作为我网站的个人资料图片。我正在使用omniauth gem 进行Facebook 登录。登录后,omniauth 以 Hash 的形式向 Facebook 响应,如下所示:

{
  "user_info" => {
                   "last_name" => "..........", 
                   "image" => "http://graph.facebook.com/100002356868026/picture?type=square",
                   "first_name" => "........", 
                   "email" => "xxxxx@xxx.xxx"
                  },
  "uid" => "..........."
}

在这里,我可以使用request.omniauth["user_info"]["image"] 访问图片网址并可以使用

require 'open-uri'
image_url = request.omniauth["user_info"]["image"]
image_data = open(image_url).read
File.open("image.png", "wb") { |file| file << image_data }

我想从 url 中获取图像名称。但是,Facebook url 不包含名称(它是一个链接,它重定向到另一个页面,其 url 包含图像名称)。如何从 url 解析图像名称?

【问题讨论】:

    标签: ruby-on-rails ruby facebook open-uri


    【解决方案1】:

    我认为您无法从 url 中获取最终图像名称。图片存储在内容交付网络 (CDN) 中,该网络不是通过 facebook id 而是通过其他索引来交付图片的。

    你为什么想要最终的图像名称?您可以按照您引用的图像参数获取图像,它将直接返回用户的图像数据(如果可用,则返回一个虚拟图像)。

    如果您想将图像存储在服务器上,您很可能会选择自己的命名方案。

    重要提示:请仔细查看 facebook 开发者条款!在您的服务器上存储用户图像可能会违反这些条款。

    如果可能的话,我建议不要在您的服务器上处理图像,而只在您的 html 图像标签中包含图像参数。

    【讨论】:

    • 是的...我担心的是我想将此图像用作个人资料图片..在某些地方,图像正在调整大小并显示..所以如果我得到图像,我可以调整大小图像..但我意识到这是一个坏主意..我应该在 html 图像标签中使用图像参数并在 html 中指定宽度和高度。
    • 我建议这样做。 facebook 提供四种不同尺寸的用户图像,因此您可能能够获得合适尺寸的图像。在您的问题中,您使用了“type = square”。您可以使用“小”、“正常”或“大”来代替“方形”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多