How to make batch request using php facebook php SDK

In my project, I have a lot of event id in one table. I want to iterate over this identifier and make a facebook request for more information about this particular id.

Now I am creating a different http request for each ID. I would like to put this in a package so that I can pass the entire identifier and get all the additional information for all these events in one http request.

I am using PHP PHP sdk

+1
php facebook batch-file facebook-graph-api
source share
3 answers

Here's a rough example of doing two queries in a package ...

$batch = array(); $req = array( 'method' => 'GET', 'relative_url' => '/me' ); $batch[] = json_encode($req); $req = array( 'method' => 'GET', 'relative_url' => '/me/albums' ); $batch[] = json_encode($req); $params = array( 'batch' => '[' . implode(',',$batch) . ']' ); try { $info = $facebook->api('/','POST',$params); } catch(FacebookApiException $e) { error_log($e); $info = null; } if(!empty($info)){ if($info[0]['code'] == '200'){ $user_profile = json_decode($info[0]['body']); } if($info[1]['code'] == '200'){ $user_albums = json_decode($info[1]['body']); } echo "<pre>User Profile:\n"; print_r($user_profile); echo "\nAlbums\n"; print_r($user_albums); echo "<pre>"; } 

This is an example, but it should contain the basics of executing a batch request ...

+7
source share
 use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\GraphUser; use Facebook\FacebookRequestException; FacebookSession::setDefaultApplication('YOUR_APP_ID','YOUR_APP_SECRET'); // Use one of the helper classes to get a FacebookSession object. // FacebookRedirectLoginHelper // FacebookCanvasLoginHelper // FacebookJavaScriptLoginHelper // or create a FacebookSession with a valid access token: $session = new FacebookSession('access-token-here'); try { $response = (new FacebookRequest($session, 'GET', '/me'))->execute(); $params = [ [ // call 0 - get current logged in user "method" => "GET", "relative_url" => "me" ], [ // call 1 - get current logged in user friends "method" => "GET", "relative_url" => "me/friends" ], [ // call 3 - get current logged in user likes "method" => "GET", "relative_url" => "me/likes" ], [// call 4 - get current logged in user albums and photos "method" => "GET", "relative_url" => "method/fql.multiquery/?queries=" . json_encode([ "albums" => urlencode("SELECT aid, object_id, type, name, visible, owner, cover_pid, cover_object_id, visible, photo_count, video_count FROM album WHERE owner=me()"), "album_covers" => urlencode("SELECT src_big, src_small, images, aid FROM photo WHERE pid IN (SELECT cover_pid FROM #albums)"), "photos" => urlencode("SELECT pid, object_id, owner, src_big, src_small, images, aid FROM photo WHERE aid IN (SELECT aid FROM #albums)") ]) ]; $response = (new FacebookRequest($session, 'POST', '?batch='.json_encode($params) ))->execute(); $objects = $response->getGraphObject(); foreach($objects->asArray() as $object){ $body = json_decode($object->body, 1); print_r($body); echo "--------------\n"; } } catch(FacebookRequestException $e) { echo "Exception occured, code: " . $e->getCode(); echo " with message: " . $e->getMessage(); } 
0
source share

You can execute these queries as follows:

 curl \ -F 'access_token=…' \ -F 'batch=[ \ {"method": "GET", "relative_url": "me"}, \ {"method": "GET", "relative_url": "me/friends?limit=50"} \ ]'\ https://graph.facebook.com 

https://developers.facebook.com/docs/reference/api/batch/

There is a batch size limit of 50.

-3
source share

All Articles