Безопасная загрузка профиля в 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 ответов

Решение
  1. Это безопасное место, это просто не безопасное перенаправление
  2. Все, что вы можете сделать, это убедиться, что вы используете безопасный запрос при вызове графика 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);
?>

Взято из

http://www.permadi.com/blog/2010/12/loading-facebook-profile-picture-into-flash-swf-using-open-graph-api/

Доступ через 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

Другие вопросы по тегам