HWIOBundle FacebookConnect - 数据分页

时间:2015-05-31 17:32:58

标签: facebook symfony hwioauthbundle

我正在使用Symfony2和HWIOAuthBundle。我设法获取请求的数据(包括页面喜欢),但是如果他们的数量超过24并且用户有超过24页的喜欢,那么facebook api会发送next属性,并使用URL调用如下:

...
    [24]=>
        array(4) {
          ["category"]=>
          string(26) "Computers/Internet Website"
          ["name"]=>
          string(10) "IOScreator"
          ["id"]=>
          string(16) "1488441341444225"
          ["created_time"]=>
          string(24) "2015-01-30T10:28:42+0000"
        }
      }
      ["paging"]=>
      array(2) {
        ["cursors"]=>
        array(2) {
          ["before"]=>
          string(20) "MTEyOTU3ODQ1NDAwNzAw"
          ["after"]=>
          string(24) "MTQ4ODQ0MTM0MTQ0NDIyNQ=="
        }
        ["next"]=>
        string(99) "https://graph.facebook.com/v2.0/10152896110784845/likes?limit=25&after=MTQ4ODQ0MTM0MTQ0NDIyNQ%3D%3D"
      }
    }

有人知道如何请求此捆绑中的下一页吗?

以下是我如何获得第一个回复:

$userProvider = $this->container->get('bundleName_user.oauth_provider');
$facebookResourceOwner = $this->container->get('hwi_oauth.resource_owner.facebook');

$accessToken = $request->get('accessToken');
$userResponse = $facebookResourceOwner->getUserInformation(array(
    'access_token' => $accessToken
));

1 个答案:

答案 0 :(得分:1)

我认为有一种方法可以直接使用捆绑包但HWIOBundle,但我有两种方法可以看到你这样做。

选项1:添加到FacebookResourceOwner.php

在这里,您可以添加另一个函数来发出请求,该函数将使用HWIOBundle中包含的库。类似的东西:

public function nextParamRequest($access_token, $nextURL) {
  $response = $this->httpRequest($this->normalizeUrl($nextURL, array('access_token' => $access_token), array(), array())));

  return $this->getResponseContent($response);
}

选项2:只需编写自己的cURL方法即可

在代码中的某处,只需添加以下内容:

function curlNextUrl($access_token, $nextURL) {
  $request_url = $nextURL."&access_token=".$access_token;

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $request_url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    
  curl_setopt($curl, CURLOPT_HEADER, 0);

  $response = curl_exec($curl);
  curl_close($curl);

  return json_decode($response, true);
}