En php sería así:
  Código PHP:
    <?php
  $app_id = "APP_ID";
  $app_secret = "APP_SECRET";
  $post_login_url = "POST_AUTH_REDIRECT_URL";
  $album_id = "ALBUM_ID";
  $photo_url = "PHOTO_URL";
  $photo_caption = "PHOTO_CAPTION";
  $code = $_REQUEST["code"];
  //Obtain the access_token with publish_stream permission 
  if (!$code){ 
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
      . "client_id=" .  $app_id
      . "&redirect_uri=" . urlencode( $post_login_url)
      .  "&scope=publish_stream";
    echo("<script>top.location.href='" . $dialog_url
      . "'</script>");
  } else {
    $token_url="https://graph.facebook.com/oauth/access_token?"
      . "client_id=" . $app_id
      . "&client_secret=" . $app_secret
      . "&redirect_uri=" . urlencode( $post_login_url)
      . "&code=" . $code;
    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];
    // POST to Graph API endpoint to upload photos
    $graph_url= "https://graph.facebook.com/" 
      . $album_id . "/photos?"
      . "url=" . urlencode($photo_url)
      . "&message=" . urlencode($photo_caption)
      . "&method=POST"
      . "&access_token=" .$access_token;
    echo '<html><body>';
    echo file_get_contents($graph_url);
    echo '</body></html>';
  }
?>    
  Es decir, hay que tener una imagen subida a un servidor ($photo_url= rura absoluta a esa imagen) y redireccionar a esta url: 
 Código PHP:
    $graph_url= "https://graph.facebook.com/" 
      . $album_id . "/photos?"
      . "url=" . urlencode($photo_url)
      . "&message=" . urlencode($photo_caption)
      . "&method=POST"
      . "&access_token=" .$access_token; 
    
  Con javascript podrás realizar todo el proceso  excepto la subida de la imagen a un servidor.