1

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

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

在这里,我可以使用访问图像 urlrequest.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 解析图像名称?

4

1 回答 1

1

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

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

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

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

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

于 2011-11-25T23:50:47.093 回答