Использование cURL для получения альбома Facebook jSON с PHP

Я нашел скрипт в журнале Web Designer, который позволяет вам собирать данные альбома с фан-страницы Facebook и размещать их на своем сайте.

Скрипт использует PHP-функцию file_get_contents(), которая прекрасно работает на моем персональном сервере, но не разрешена на хостинге Network Solutions.

Просматривая их документацию, они рекомендовали вам использовать сеанс cURL для сбора данных. Я никогда раньше не использовал сеансы cURL, и для меня это загадка. Любая помощь будет оценена.

Код, который я "использовал", выглядел так:

<?php
    $FBid = '239319006081415';
    $FBpage = file_get_contents('https://graph.facebook.com/'.$FBid.'/albums');
    $photoData = json_decode($FBpage);

    $albumID = $photoData->data[0]->id;
$albumURL = "https://graph.facebook.com/".$albumID."/photos";

    $rawAlbumData = file_get_contents("https://graph.facebook.com/".$albumID."/photos");
$photoData2 = json_decode($rawAlbumData);

    $a = 0;

foreach($photoData2->data as $data) {
        $photoArray[$a]["source"] = $data->source;
    $photoArray[$a]["width"] = $data->width;
    $photoArray[$a]["height"] = $data->height;
    $a++;
}
?>

Код, который я пытаюсь использовать, теперь выглядит так:

<?php
    $FBid = '239319006081415';
$FBUrl = "https://graph.facebook.com/".$FBid."/albums";

    $ch = curl_init($FBUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$contents = curl_exec($ch);
curl_close($ch);
$photoData = json_decode($contents);
?>

Однако когда я пытаюсь отобразить содержимое $ photoData или манипулировать им, становится ясно, что оно пустое.

Какие-нибудь мысли?

3 ответа

Используйте jquery, чтобы получить Json. Этот совет взят из загрузчика FB, скрипт GreaseMonkey.

Попробуйте удалить curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); Я не совсем уверен, что это делает, но я не использую его, и мой код выглядит очень похоже. Я бы также использовал:

json_decode ($ содержание, правда); Это должно поместить результаты в массив вместо объекта. Мне больше повезло с этим подходом.

Поместите это в категорию работ для меня.

Попробуйте это может сработать

$ch = curl_init($FBUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$contents = curl_exec($ch);
$pageData = json_decode($contents);
//object to array
$objtoarr = get_object_vars($pageData);
curl_close($ch);
Другие вопросы по тегам