当用户通过Facebook登录时,我想使用Facebook个人资料图像作为我的网站的个人资料图像。我使用omniauth gem进行Facebook登录。登录后,omniauth给出了一个Hash的形式,看起来像这样Facebook的回应:从Facebook获取图像名称image url
{
"user_info" => {
"last_name" => "..........",
"image" => "http://graph.facebook.com/100002356868026/picture?type=square",
"first_name" => "........",
"email" => "[email protected]"
},
"uid" => "..........."
}
在这里,我可以使用request.omniauth["user_info"]["image"]
访问图像的URL,可以使用保存
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 }
我想从网址获取图片名称。但是,Facebook的网址不包含名称(它是一个链接,重定向到另一个网址,其网址包含图像名称)。我如何解析url的图像名称?
yea ...我的担心是我想用这个图像作为个人资料图片..在一些地方,图像正在调整大小和显示..所以,如果我得到的图像,我可以调整图像大小..但我意识到这是一个坏主意..我应该在html图像标记中使用图像参数,并在html中指定宽度和高度。 – rubyprince
我会建议这个。 facebook提供四种不同尺寸的用户图像,因此您可能会获得适当大小的图像。在你的问题中你使用了“type = square”。而不是“方块”,你可以使用“小”,“正常”或“大”。 – user562529