This document refers to a feature that was added in PHP SDK v1.0.
PHP SDK Version

FacebookRequest for the Facebook SDK for PHP

Represents a request that will be sent to the Graph API.


You can instantiate a new FacebookRequest entity directly by sending the arguments to the constructor.

use Facebook\FacebookRequest;

$request = new FacebookRequest(  
  Facebook\FacebookApp $app,
  string $accessToken,
  string $method,
  string $endpoint,
  array $params,
  string $eTag,
  string $graphVersion

Alternatively, you can make use of the request() factory provided by Facebook\Facebook to create new FacebookRequest instances.

The FacebookRequest entity does not actually make any calls to the Graph API, but instead just represents a request that can be sent to the Graph API later. This is most useful for making batch requests using Facebook\Facebook::sendBatchRequest() or Facebook\FacebookClient::sendBatchRequest().


$fbApp = new Facebook\FacebookApp('{app-id}', '{app-secret}');
$request = new Facebook\FacebookRequest($fbApp, '{access-token}', 'GET', '/me');

// OR

$fb = new Facebook\Facebook(/* . . . */);
$request = $fb->request('GET', '/me');

// Send the request to Graph
try {
  $response = $fb->getClient()->sendRequest($request);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e->getMessage();

$graphNode = $response->getGraphNode();

echo 'User name: ' . $graphNode['name'];

Instance Methods


public setAccessToken(string|Facebook\AccessToken $accessToken)

Sets the access token to be used for the request.


public string getAccessToken()

Returns the access token to be used for the request in the form of a string.


public setApp(Facebook\FacebookApp $app)

Sets the Facebook\FacebookApp entity used with this request.


public Facebook\FacebookApp getApp()

Returns the Facebook\FacebookApp entity used with this request.


public string getAppSecretProof()

Returns the app secret proof to sign the request.


public setMethod(string $method)

Sets the HTTP verb to use for the request.


public string setMethod()

Returns the HTTP verb to use for the request.


public setEndpoint(string $endpoint)

Sets the Graph URL endpoint to be used with the request. The endpoint must be excluding the host name and Graph version number prefix.



public string getEndpoint()

Returns the Graph URL endpoint to be used with the request.


public setHeaders(array $headers)

Sets additional request headers to be use with the request. The supplied headers will be merged with the existing headers. The headers should be sent as an associative array with the key being the header name and the value being the header value.

  'X-foo-header' => 'Something',


public array getHeaders()

Returns the request headers that will be sent with the request. The eTag headers If-None-Match are appended automatically.


public setETag(string $eTag)

Sets the eTag that will be using for matching the If-None-Match header.


public setParams(array $params)

For GET requests, the array of params will be converted to a query string and appended to the URL.

  'foo' => 'bar',
  'limit' => 10,
// /endpoint?foo=bar&limit=10

For POST requests, the array of params will be sent in the POST body encoded as application/x-www-form-urlencoded for most request. If the request includes a file upload the params will be encoded as multipart/form-data.


public array getParams()

Returns an array of params to be sent with the request. The access_token and appsecret_proof params will be automatically appended to the array of params.


public string getGraphVersion()

Returns the Graph version prefix to be used with the request.


public string getUrl()

Returns the endpoint of the Graph URL for the request. This will include the Graph version prefix but will not include the host name. The host name is determined after the request is sent to Facebook\FacebookClient.

$fb = new Facebook\Facebook(/* . . . */);
$request = $fb->request('GET', '/me', ['fields' => 'id,name']);

$url = $request->getUrl();
// /v2.2/me?fields=id,name&access_token=token&appsecret_proof=proof