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()
.
Usage:
$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();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
echo 'User name: ' . $graphNode['name'];
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.
$request->setEndpoint('/me');
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.
$request->setHeaders([
'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.
$request->setParams([
'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.10/me?fields=id,name&access_token=token&appsecret_proof=proof