2015-05-31 2 views
0

Я использую Symfony2 с HWIOAuthBundle. Мне удалось получить запрошенные данные (включая страницы любит), но если их число превышает 24, и пользователь имеет более чем 24 страница любит facebook апи посылает next атрибут с URL для вызова следующим образом:HWIOBundle FacebookConnect - разбиение на страницы данных

... 
    [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

Я не думаю, что есть способ сделать это напрямую, используя связку, но 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); 
} 
Смежные вопросы