我正在使用PHP SDK 5.0。我已经能够从我的FB页面中提取帖子并将其显示在我的网站with this code下方。我需要帮助来实现此代码返回的结果的分页。
session_start();
require_once __DIR__. '/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxx',
'default_graph_version' => 'v2.4',
'default_access_token' => 'xxxxxxxxxxxx',
]);
$request = $fb->request('GET','/500px/feed/', array('fields' => 'created_time,message', 'limit' => '3',));
try {
$response = $fb->getClient()->sendRequest($request);
$data_array = $response->getDecodedBody();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
Facebook会返回包含每个Feed-result的下一个和上一个链接,如下例所示。我如何使用这些分页?或者有更好的选择。
[data] => Array
(
[0] => Array
(
[created_time] => 2015-09-23T17:00:53+0000
[message] => some message pulled from the post
[id] => 57284451149_10152992926641150
)
)
[paging] => Array
(
[previous] => https://graph.facebook.com/v2.4/57284451149/feed?fields=created_time,message&limit=1&since=1443027653&access_token=xxxxxxxxxxx&__paging_token=enc_xxxxxxxxxxxx&__previous=1
[next] => https://graph.facebook.com/v2.4/57284451149/feed?fields=created_time,message&limit=1&access_token=xxxxxxxxxxx&until=1443027653&__paging_token=enc_xxxxxxxxxxxx
)
我还在学习PHP,在这一点上我不知道如何超越这个。理想情况下,每页将有三个结果,结果将显示在同一页面上。如果不是解决方案,我会非常感谢伪代码或有用的建议或路线图,这将有助于我自己做。
TEMP解决方案 - 我可能走错了轨道,但这是我作为临时解决方案所做的。看起来像facebook做了所有的工作,例如偏移等,并为我们提供了一个计算的网址,我们需要做的就是使用提供的网址。
//set your url parameters here
function fetchUrl($url){
if(is_callable('curl_init')){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$feedData = curl_exec($ch);
curl_close($ch);
}
return $feedData;
}
if(isset($_POST['nextLink'])){
$url = $_POST['nextLink'];
} elseif(isset($_POST['prevLink'])){
$url = $_POST['prevLink'];
} else {
$url = 'https://graph.facebook.com/v2.4/'.$pageID.'/feed?fields='.$fields.'&limit='.$limit.'&access_token='.$accessToken;
}
$json_object = fetchUrl($url);
$FBdata = json_decode($json_object, true);
//parse the received data in your desired format
//display data
//get the next link, construct and set a url
$nextLink = $FBdata['paging']['next'];
$prevLink = $FBdata['paging']['previous'];
//Your next and previous form here
我会使用http GET
方法,但我不喜欢丑陋的长网址,因此我使用POST
方法获取next
和previous
网址。请注意,我使用cURL而不是PHP SDK。这是一个简化的示例,需要更多的工作。
我不是写这个作为答案,因为这只是一个解决方案,我仍然希望使用 PHP SDK 来做到这一点。我只是无法保持SDK
生成的网址。有什么输入吗?