facebook php sdk 4版,无法获取用户专辑

时间:2014-10-31 14:17:13

标签: facebook facebook-graph-api facebook-php-sdk

我正在通过php sdk 4版本开发一个facebook应用程序 我的代码如下:

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>";
}


但问题是我没有收到任何专辑数据。我不知道问题是什么?早先的要求是:/我工作正常。我通过打印$ user_id来检查。但下一个获取专辑的请求不起作用,即/我/专辑。帮我纠正这个。

2 个答案:

答案 0 :(得分:1)

尝试使用getGraphObjectList()方法,因为您需要多个对象。然后结果将是GraphObject个对象的数组,see here

从这里开始,您需要使用可用的辅助方法(例如getProperty())来访问这些对象而不是数组。

否则,您可以使用asArray()检索支持此对象的数组。

答案 1 :(得分: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;
    }