Получение изображения профиля пользователя в PHP через curl не работает - PullRequest
2 голосов
/ 26 августа 2011

Мне нужно изображение пользователя как объект изображения в PHP.
Очевидным выбором будет сделать следующее:

$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large';
$img = imagecreatefromjpeg($url);

Это работает на моем тестовом сервере, но не на сервере, который должен в конечном итоге запускаться этим скриптом (allow_url_fopen там выключен).

Итак, я попытался получить изображение с помощью curl:

function LoadJpeg($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
  $fileContents = curl_exec($ch);
  curl_close($ch);
  $img = imagecreatefromstring($fileContents);

  return $img;
}

$url = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large';
$img = LoadJpeg($url);

Это, однако, не работает с фотографиями профиля в Facebook .
Например, загрузка логотипа Googles с google.com с помощью curl работает отлично.

Может кто-нибудь сказать мне, почему или как мне добиться того, что я пытаюсь сделать?

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Вы должны установить

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true);

таким образом, вы найдете изображение без него, вы получите 302 код ответа без изображения, потому что в другомПоложение устанавливается в поле «url» заголовка ответа.

1 голос
/ 26 августа 2011
  1. Самое простое решение: включить allow_url_fopen
  2. Facebook, скорее всего, соответствует вашему пользовательскому агенту.

Подделать это как ...

 // spoofing Chrome
 $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, wie z. B. Gecko) Chrome/13.0.782.215 Safari/525.13.";

 $ch = curl_init();

 // set user agent
 curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
 // set the rest of your cURL options here

Я не должен упоминать, что это нарушает их TOS и может привести к юридическим проблемам, верно? Также убедитесь, что вы следуете их robots.txt!

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