Получение “реального” URL фотографии профиля Facebook от графика API

График Facebook, который API говорит мне, я могу получить фотографию профиля пользователя, использующего

http://graph.facebook.com/517267866/picture?type=large

который хорошо работает. Однако, когда Вы вводите выше URL в браузер, исполнительный адрес изображения

http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg

Как я могу получить второй URL с помощью первого программно?

75
задан ericbae 27 July 2010 в 08:01
поделиться

1 ответ

Первый URL-адрес дает HTTP 302 (временное перенаправление) на второй. Итак, чтобы найти второй URL-адрес программным способом, вы можете отправить HTTP-запрос для первого URL-адреса и получить в ответе заголовок Location .

Тем не менее, не полагайтесь на то, что второй URL-адрес является постоянным. Немного прочитав код ответа HTTP (302 вместо постоянного 301), возможно, Facebook изменяет эти URL-адреса на регулярной основе, чтобы люди, например, не могли использовать свои серверы для размещения изображений.


Изменить: Обратите внимание, что URL-адрес CDN, опубликованный OP, теперь имеет значение 404, поэтому мы знаем, что мы не можем полагаться на долговечность URL-адреса. Кроме того, если вы подключаетесь к Graph API из на странице, защищенной SSL, есть параметр , который вы должны добавить , убедитесь, что вы используете http s : //graph.facebook.com .


Обновление: В API добавлен параметр - redirect = false , который заставляет возвращать JSON, а не перенаправление. Возвращенный JSON включает URL-адрес CDN:

{
   "data": {
      "url": "http://profile.ak.fbcdn.net/...",
      "is_silhouette": false
   }
}

Опять же, я бы не стал полагаться на долговечность этого URL-адреса CDN. Ответ JSON отправляется с разрешающими заголовками CORS, поэтому вы можете делать это на стороне клиента с помощью запросов XHR.

73
ответ дан 24 November 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: