2014-10-31 2 views
0

Я разрабатываю приложение facebook через версию php sdk 4.
Мой код выглядит следующим образом:facebook php sdk 4 version, не удалось получить альбомы пользователей

try { 
    $session = $helper->getSession(); 
} catch (FacebookRequestException $ex) { 
    echo $ex->getMessage(); 
} catch (\Exception $ex) { 
echo $ex->getMessage(); 
} 
if ($session) { 
    try { 
     $request = new FacebookRequest($session, 'GET', '/me'); 
     $response = $request->execute(); 
     $me = $response->getGraphObject(); 
     $user_id = $me->getProperty('id'); 
     echo $user_id; 
     $accessToken = $session->getAccessToken(); 
     echo $accessToken; 
     echo "<br>".$user_id; 
     $request = new FacebookRequest($session, 'GET', '/me/albums'); 
     $response = $request->execute(); 
     $userAlbums = $response->getGraphObject(); 
     echo $userAlbums['data'][0]['id']; 


    } catch(FacebookRequestException $e) { 
     echo $e->getMessage(); 
    } 
} else { 
    $helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/lykebook/'); 
$auth_url = $helper->getLoginUrl(array('user_friends', 'publish_actions', 'user_photos', 'user_status', 'friends_photos','friends_status','publish_stream')); 
echo "<script>window.top.location.href='".$auth_url."'</script>"; 
} 


Но проблема в том, что я не получаю никаких данных альбома. Я не знаю, в чем проблема? Более ранняя просьба i.e:/me работает нормально. Я проверил это, напечатав $ user_id. Но следующий запрос на получение альбомов не работает i.e/me/albums. Помогите мне в исправлении этого.

+0

Я использовал отладку с помощью эхо "

"; var_dump($userAlbums); echo "
"; и выясните, что все данные показывают, что я получаю все json-данные альбомов из facebook, но не могу разобрать с помощью php sdk 4. как это сделать. –

ответ

1

Пробуйте использовать метод getGraphObjectList(), так как вы ожидаете более чем одного объекта. Тогда результатом будет массив из GraphObject объектов, see here.

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

В противном случае вы можете получить массив, поддерживающий этот объект, с помощью asArray().

+0

спасибо за разъяснение! –

+0

сейчас я получаю следующую ошибку: которую я опубликовал в новом вопросе, как исправить это: [link] http://stackoverflow.com/questions/26688580/some-of-the-aliases-you-requested-do -не существовать-A-DATA-идентификатор –

0

Вы можете использовать getGraphEdge, здесь ниже код:

$fb->setDefaultAccessToken($accessToken); 

    try { 

     $response = $fb->get('/me/albums'); 
     $albums = $response->getGraphEdge(); 

    } catch(Facebook\Exceptions\FacebookResponseException $e) { 
     // When Graph returns an error 
     echo 'Graph returned an error: ' . $e->getMessage(); 
     exit; 

    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
     // When validation fails or other local issues 
     echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
     exit; 
    } 

    foreach ($albums as &$value) { 
      echo $value; 
    }