Безопасная загрузка профиля в Facebook
Я пытаюсь включить изображение профиля пользователя из Facebook, которое работает нормально, но дело в том, когда вы хотите добавить его на страницу, защищенную SSL. Я не могу найти способ загрузить картинку из безопасного места. Используя следующую ссылку на картинку профиля пользователя:
https://graph.facebook.com/<FB_ID HERE>/picture?type=square
Несмотря на то, что я использую https, он не загружается безопасно (браузер говорит, что страница только частично зашифрована). И это не странно, так как ссылка просто перенаправляет на изображения, например, для моего изображения профиля:
https://graph.facebook.com/Bazze/picture?type=square
Это получит картину от:
http://profile.ak.fbcdn.net/hprofile-ak-snc4/161513_633115680_6792455_q.jpg
Обратите внимание, что это не безопасное место.
Кто-нибудь знает, как безопасно загрузить изображение профиля по протоколу https?
Спасибо!
7 ответов
- Это безопасное место, это просто не безопасное перенаправление
- Все, что вы можете сделать, это убедиться, что вы используете безопасный запрос при вызове графика API, после этого Facebook перехватит связь, и ничего не поделаешь.
добавлятьreturn_ssl_resources=1
на ваш график вызова:
https://graph.facebook.com/<FB_ID>/picture?type=square&return_ssl_resources=1
Это правильный способ получить изображение, обслуживаемое SSL; перенаправление будет на сервер https с соответствующим сертификатом SSL.
Обновление. Похоже, что теперь Facebook будет автоматически перенаправлять вас на изображения, размещенные на https, при использовании https://graph.facebook.com/, поэтому return_ssl_resources
параметр больше не нужен.
Использование http://graph.facebook.com/ прежнему дает вам http-изображение.
В редиректе 302 будет указан URL вашего изображения, как указано в документации Open Graph API.
Вам нужно перейти с: / http profile.ak.fbcdn.net / на: / https fbcdn-profile-a.akamaihd.net /
И из: / http static.ak.fbcdn.net / в: / https s-static.ak.fbcdn.net /
Я действительно думаю, что FB должен делать это в своих API!!!!
Ну, https://graph.facebook.com/Bazze/picture?type=square - это перенаправление 302 на http: //.... Но обратите внимание, что https: //... все еще работает ( пример).
Таким образом, похоже, что одно решение - проанализировать 302 самостоятельно, вставить 's' в соответствующее место, а затем получить изображение. Но с другой стороны, на указанной выше странице есть ошибки сертификата, и нет хорошего способа исправить это.
(Я не говорю, что это хороший ответ...)
Вы можете прокси через свой собственный сервер. Настройте скрипт, который извлекает изображение из Facebook, а затем отправляет его обратно через SSL.
Например
<?php
$path=$_GET['path'];
if (stristr($path, "fbcdn.")==FALSE && stristr($path, "facebook.")==FALSE)
{
echo "ERROR";
exit;
}
header("Content-Description: Facebook Proxied File");
header("Content-Type: image");
header("Content-Disposition: attachment; filename=".$path);
@readfile($path);
?>
Взято из
Доступ через https://yourdomainhere.com/proxy.php?path=URLENCODED-IMG-URI должен возвращать userpic через SSL.
Вы также можете получить безопасные профильные изображения, в этом случае вам нужно добавить параметр return_ssl_resources=1, как упомянуто @josh3736.
https://graph.facebook.com/?ids=id1,id2,id3,...&fields=picture&return_ssl_resources=1
Использование ***http***://graph.facebook.com/Bazze/picture?type=square
вместо **https**://graph.facebook.com/Bazze/picture?type=square