Использование cURL для получения JSON-альбома Facebook с 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, становится ясно, что оно пусто.

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


person John Hubler    schedule 26.09.2011    source источник
comment
Сменить хостинг. Они невежественны. Нет причин отключать allow_url_fopen, но разрешать cURL.   -  person Gordon    schedule 26.09.2011
comment
Я слышу тебя. Предлагаю сменить хозяина. У меня были проблемы только с этими ребятами до сих пор. Однако, если клиент не хочет менять хосты - у меня связаны руки.   -  person John Hubler    schedule 26.09.2011
comment
У меня есть только загрузчик альбомов FBJS (на стороне клиента), который может загружать фотографии из общедоступного альбома. Может быть полезнее: github.com/davidosomething/Facebook-OpenGraph-API-Album -Загрузчик   -  person davidosomething    schedule 26.09.2011
comment
Похоже, это может быть именно то, что я ищу! Благодарю вас!   -  person John Hubler    schedule 26.09.2011


Ответы (3)


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

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

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

person Dustin Nielson    schedule 26.09.2011

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

$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);
person Sam Arul Raj T    schedule 30.03.2012

Вместо этого используйте jquery get Json. Этот совет взят из скрипта GreaseMonkey загрузчика альбомов FB.

person Ana    schedule 05.05.2012
comment
Что делать, если данные нужны на сервере? jQuery тогда не будет работать. - person Sven; 20.10.2012