PHP code example of sammyk / facebook-query-builder
1. Go to this page and download the library: Download sammyk/facebook-query-builder library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sammyk / facebook-query-builder example snippets
$fqb = new SammyK\FacebookQueryBuilder\FQB;
$photosEdge = $fqb->edge('photos')->fields(['id', 'source'])->limit(5);
$request = $fqb->node('me')->fields(['id', 'email', $photosEdge]);
echo (string) $request;
# https://graph.facebook.com/me?fields=id,email,photos.limit(5){id,source}
$edge = $fqb->edge('edge-name')->fields('field-name');
echo $fqb->node('node-id')->fields($edge);
// Assuming you've FacebookQueryBuilder\FQB;
$fqb = new SammyK\FacebookQueryBuilder\FQB;
$request = $fqb->node('me')
->fields(['id', 'email'])
->accessToken('user-access-token')
->graphVersion('v3.1');
echo $request;
# https://graph.facebook.com/v3.1/me?access_token=user-access-token&fields=id,email
$response = file_get_contents((string) $request);
var_dump($response);
# string(50) "{"id":"12345678","email":"foo-bar\u0040gmail.com"}"
$fqb = new SammyK\FacebookQueryBuilder\FQB([/* . . . */]);
$photosEdge = $fqb->edge('photos')->fields(['id', 'source'])->limit(5);
$request = $fqb->node('me')->fields(['name', $photosEdge]);
echo $request;
# https://graph.facebook.com/me?fields=name,photos.limit(5){id,source}
// Assumes you've set a default access token
$response = file_get_contents((string) $request);
var_dump($response);
# string(1699) "{"name":"Sammy Kaye Powers","photos":{"data":[{"id":"123","source":"https:\/\/scontent.xx.fbcdn.net\/hphotos-xfp1 . . .
$fqb = new SammyK\FacebookQueryBuilder\FQB([/* . . . */]);
$likesEdge = $fqb->edge('likes');
$commentsEdge = $fqb->edge('comments')->fields('message')->limit(2);
$photosEdge = $fqb->edge('photos')
->fields(['id', 'source', $commentsEdge, $likesEdge])
->limit(10);
$request = $fqb->node('1234')->fields(['name', $photosEdge]);
echo $request;
# https://graph.facebook.com/1234?fields=name,photos.limit(10){id,source,comments.limit(2){message},likes}
// Assumes you've set a default access token
$response = file_get_contents((string) $request);
var_dump($response);
# string(10780) "{"name":"Some Foo User","photos":{"data":[ . . .
$fb = new Facebook\Facebook([
'app_id' => 'your-app-id',
'app_secret' => 'your-app-secret',
'default_graph_version' => 'v3.1',
]);
$fqb = new SammyK\FacebookQueryBuilder\FQB;
$fb->setDefaultAccessToken('my-access-token');
$request = $fqb->node('me')->fields(['id', 'name', 'email']);
echo $request->asEndpoint();
# /me?fields=id,name,email
try {
$response = $fb->get($request->asEndpoint());
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo $e->getMessage();
exit;
}
var_dump($response->getDecodedBody());
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'default_graph_version' => 'v3.1',
'app_secret' => 'your-app-secret',
]);
// Grab Mark Zuckerberg's public info
$request = $fqb->node('4')->accessToken('my-access-token');
echo $request;
# https://graph.facebook.com/v3.1/4?access_token=my-access-token&appsecret_proof=2ad43b865030f51531ac36bb00ce4f59d9f879ecce31b0977dbfd73fa4eca7b6
$response = file_get_contents((string) $request);
var_dump($response);
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'default_access_token' => 'your-access-token',
'default_graph_version' => 'v3.1',
'app_secret' => 'your-app-secret',
]);
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'default_access_token' => 'fallback_access_token',
]);
$request = $fqb->node('me');
echo $request->asEndpoint();
# /me?access_token=fallback_access_token
$request = $fqb->node('me')->accessToken('bar_token');
echo $request->asEndpoint();
# /me?access_token=bar_token
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'default_graph_version' => 'v3.1',
]);
$request = $fqb->node('me');
echo $request->asEndpoint();
# /v3.1/me
$request = $fqb->node('me')->graphVersion('v1.0');
echo $request->asEndpoint();
# /v1.0/me
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'app_secret' => 'foo_secret',
]);
$request = $fqb->node('me')->accessToken('bar_token');
echo $request->asEndpoint();
# /me?access_token=bar_token&appsecret_proof=2ceec40b7b9fd7d38fff1767b766bcc6b1f9feb378febac4612c156e6a8354bd
echo (string) $fqb->node('4');
# https://graph.facebook.com/4
$fqb = new SammyK\FacebookQueryBuilder\FQB([
'enable_beta_mode' => true,
]);
echo (string) $fqb->node('4');
# https://graph.beta.facebook.com/4
node(string $graphNodeName): FQB
$userNode = $fqb->node('me');
node(string $edgeName): GraphEdge
$photosEdge = $fqb->edge('photos');
fields(mixed $fieldNameOrEdge[, mixed $fieldNameOrEdge[, ...]]): FQB
$edge = $fqb->edge('some_edge')->fields(['field_one', 'field_two']);
$node = $fqb->node('some_node')->fields('my_field', 'my_other_field', $edge);
modifiers(array $modifiers): FQB
// Order the comments in chronological order
$commentsEdge = $fqb->edge('comments')->modifiers(['filter' => 'stream']);
$request = $fqb->node('1044180305609983')->fields('name', $commentsEdge);
limit(int $numberOfResultsToReturn): FQB
$edge = $fqb->edge('photos')->limit(7);
$edge = $fqb->edge('photos')->modifiers(['limit' => 7]);
accessToken(string $accessToken): FQB
$request = $fqb->node('BradfordWhelanPhotography')->accessToken('foo-token');
echo $request->asEndpoint();
# /BradfordWhelanPhotography?access_token=foo-token
graphVersion(string $graphApiVersion): FQB
$request = $fqb->node('me')->graphVersion('v3.1');
echo $request->asEndpoint();
# /v3.1/me
asUrl(): string
$request = $fqb->node('me');
echo $request->asUrl();
# https://graph.facebook.com/me
$request = $fqb->node('me');
echo (string) $request;
# https://graph.facebook.com/me
asEndpoint(): string
$request = $fqb->node('me');
echo $request->asEndpoint();
# /me
$fb = new Facebook\Facebook([/* . . . */]);
$fqb = new SammyK\FacebookQueryBuilder\FQB([/* . . . */]);
$fb->setDefaultAccessToken('my-access-token');
$request = $fqb->node('me')->fields(['email', 'photos']);
echo $request->asEndpoint();
# /me?fields=email,photos
try {
$response = $fb->get($request->asEndpoint());
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo $e->getMessage();
exit;
}
$userNode = $response->getGraphUser();
// Access properties like an array
$email = $userNode['email'];
// Get data as array
$userNodeAsArray = $userNode->asArray();
// Get data as JSON string
$userNodeAsJson = $userNode->asJson();
// Iterate over the /photos edge
foreach ($userNode['photos'] as $photo) {
// . . .
}
// Morph the data with a closure
$userNode['photos']->each(function ($value) {
$value->new_height = $value->height + 22;
});
$fqb = new SammyK\FacebookQueryBuilder\FQB([/* . . . */]);
$request = $fqb->node('4')
->fields(['id', 'name'])
->accessToken('user-access-token');
echo $request;
# https://graph.facebook.com/4?access_token=user-access-token&fields=id,name
$response = file_get_contents((string) $request);
$data = json_decode($response, true);
var_dump($data);
# array(2) { ["id"]=> string(1) "4" ["name"]=> string(15) "Mark Zuckerberg" }
$fqb = new SammyK\FacebookQueryBuilder\FQB([/* . . . */]);
$request = $fqb->node('Some-Invalid-Node')->accessToken('user-access-token');
echo $request;
# https://graph.facebook.com/Some-Invalid-Node?access_token=user-access-token
$context = stream_context_create(['http' => ['ignore_errors' => true]]);
$response = file_get_contents((string) $request, null, $context);
$data = json_decode($response, true);
var_dump($data);
/*
array(1) {
["error"]=>
array(4) {
["message"]=>
string(27) "Invalid OAuth access token."
["type"]=>
string(14) "OAuthException"
["code"]=>
int(190)
["fbtrace_id"]=>
string(11) "A8oB9BtqtZ4"
}
}
*/
var_dump($http_response_header);
/*
array(14) {
[0]=>
string(24) "HTTP/1.1 400 Bad Request"
[1]=>
string(89) "WWW-Authenticate: OAuth "Facebook Platform" "invalid_token" "Invalid OAuth access token.""
[2]=>
string(30) "Access-Control-Allow-Origin: *"
[3]=>
string(44) "Content-Type: text/javascript; charset=UTF-8"
[4]=>
string(26) "X-FB-Trace-ID: h8oB7BtrtZ3"
[5]=>
string(17) "X-FB-Rev: 4971439"
[6]=>
string(16) "Pragma: no-cache"
[7]=>
string(23) "Cache-Control: no-store"
[8]=>
string(38) "Expires: Sat, 01 Jan 2000 00:00:00 GMT"
[9]=>
string(21) "Vary: Accept-Encoding"
[10]=>
string(100) "X-FB-Debug: FOOE54KJadh9P2HOSUlSFQmNEEf/9CF4ZtgZQ=="
[11]=>
string(35) "Date: Fri, 09 Oct 2015 04:43:44 GMT"
[12]=>
string(17) "Connection: close"
[13]=>
string(19) "Content-Length: 113"
}
*/