Как я могу замаскировать URL-адреса API-интерфейса Facebook для изображений? - PullRequest
2 голосов
/ 22 марта 2012

Я пытаюсь отобразить изображения профиля Facebook на моем сайте, но не хочу, чтобы идентификаторы пользователей Facebook из источника указывались.

Например, этот URL: http://graph.facebook.com/4/picture будет перенаправлен на: http://profile.ak.fbcdn.net/hprofile-ak-snc4/157340_4_3955636_q.jpg при загрузке в браузере.Я хотел бы получить 2-й URL (URL-адрес CDN) и использовать его в качестве моего img src, так как он не отображает идентификатор Facebook в URL-адресе.

Я делаю это в Ruby on Rails вмомент, и мне любопытно, есть ли лучший способ, чем то, что я сделал ниже:

def picture_square(facebook_id, secure=false)
  raw_url = "http://graph.facebook.com/" facebook_id + "/picture?type=square"
  if secure
    binary_img = ''
    open(raw_url) do |f|
      binary_img = f.read
    end
    encoded_img = Base64.encode64(binary_img)
    return 'data:image/jpg;base64,' + encoded_img.to_s
  else
    return raw_url
  end
end

Вы можете назвать это с помощью следующего HTML (используя приведенный выше пример):

<img src="<%= picture_square(4, true) %>"

Thisопределенно работает и использует встроенные свойства изображения для фактической визуализации изображения, но это немного медленно, если у вас есть куча изображений, которые вы пытаетесь загрузить.

Есть ли способ в Ruby, который я могу получитьперенаправленный URL-адрес и просто вернуть его вместо того, чтобы пытаться получить фактические необработанные двоичные данные и кодировать их в base64?

1 Ответ

1 голос
/ 23 марта 2012

Сделайте вызов API графа с этим URL: http://graph.facebook.com/4/?fields=picture&type=large

Это вернет изображение, которое вы ищете внутри ответа json. Другой вариант - сделать http-запрос на первый опубликованный вами URL, а затем проверить заголовки HTTP, чтобы прочитать заголовок местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...