Получить имя изображения из URL-адреса Facebook изображения - PullRequest
1 голос
/ 23 ноября 2011

Я хочу использовать изображение профиля 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" => "..........."
}

Здесь я могу получить доступ к URL-адресу изображения с помощью 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. Но URL-адрес Facebook не содержит имя (это ссылка, которая перенаправляет на другую страницу, URL-адрес которой содержит имя изображения). Как я могу разобрать имя изображения с URL?

1 Ответ

1 голос
/ 26 ноября 2011

Я не думаю, что вы можете получить окончательное имя изображения из URL. Изображение хранится в сети доставки контента (CDN), которая доставляет изображение не по идентификатору Facebook, а по какому-либо другому индексу.

Зачем вам в конечном итоге имя окончательного изображения? Вы можете получить изображение, следуя указанному вами параметру изображения, оно будет возвращать данные изображения пользователя (если доступно, в противном случае возвращается фиктивное изображение).

Если вы хотите сохранить изображения на своем сервере, вы, скорее всего, выберете собственную схему именования.

Внимание! Пожалуйста, внимательно ознакомьтесь с условиями для разработчиков Facebook! Хранение пользовательских изображений на вашем сервере может нарушать эти условия.

Я бы рекомендовал вообще не обрабатывать изображение на вашем сервере, а просто включить параметр изображения, как он есть в вашем HTML-теге изображения, если это возможно.

...