Безопасная загрузка профиля в Facebook - PullRequest
7 голосов
/ 16 февраля 2011

Я пытаюсь включить изображение профиля пользователя из 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 ]

9 голосов
/ 10 февраля 2012

Добавьте return_ssl_resources=1 к вашему вызову Graph:

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.

2 голосов
/ 03 марта 2011

В редиректе 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 !!!!

2 голосов
/ 17 февраля 2011
  1. Это безопасное местоположение, это просто не безопасное перенаправление
  2. Все, что вы можете сделать, это убедиться, что вы используете безопасный запрос при вызове Graph API, после того, как Facebook примет связьи ничего сделать нельзя.
2 голосов
/ 17 февраля 2011

Ну, https://graph.facebook.com/Bazze/picture?type=square - это перенаправление 302 на http : // .... Но учтите, что https : // ... все еще работает ( пример ).

Таким образом, похоже, что одно решение - это самостоятельно разобрать 302, вставить 's' в соответствующее место, а затем получить изображение. Но с другой стороны, на указанной выше странице есть ошибки сертификата, и нет хорошего способа исправить это.

(я не говорю, что это хорошо ответ ...)

1 голос
/ 17 декабря 2011

Вы можете прокси через свой собственный сервер. Настройте скрипт, который извлекает изображение из 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.

0 голосов
/ 29 августа 2012

Вы также можете получить безопасные картинки профиля в этом случае, в этом случае вам нужно добавить параметр return_ssl_resources = 1, как упомянуто @ josh3736.

0 голосов
/ 17 декабря 2011

Используйте ***http***://graph.facebook.com/Bazze/picture?type=square вместо **https**://graph.facebook.com/Bazze/picture?type=square

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