Upload Photos to a User's Profile

This example covers uploading a photo to the current User's profile using the Graph API and the Facebook SDK for PHP.

It assumes that you've already acquired an access token and the access token must have the publish_actions permission for this to work.

For more information, see the documentation for Facebook\Facebook, Facebook\FileUpload\FacebookFile, Facebook\FacebookResponse, Facebook\GraphNodes\GraphNode, Facebook\Exceptions\FacebookSDKException and Facebook\Exceptions\FacebookResponseException.


$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',

$data = [
  'message' => 'My awesome photo upload example.',
  'source' => $fb->fileToUpload('/path/to/photo.jpg'),

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post('/me/photos', $data, '{access-token}');
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();

$graphNode = $response->getGraphNode();

echo 'Photo ID: ' . $graphNode['id'];

Note that the message field must come from the user, as pre-filled content is forbidden by the Platform Policies (2.3).