Sample code for 30+ languages & platforms
Perl

Download Photo to a File

See more Facebook Examples

Assuming we have the ID of a Photo, this example demonstrates how to download the photo image data to a file.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# This example assumes a previously obtained an access token
$oauth2 = chilkat::CkOAuth2->new();
$oauth2->put_AccessToken("FACEBOOK-ACCESS-TOKEN");

$rest = chilkat::CkRest->new();

# Connect to Facebook...
$success = $rest->Connect("graph.facebook.com",443,1,1);
if ($success != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

# Provide the authentication credentials (i.e. the access key)
$rest->SetAuthOAuth2($oauth2);

# Assumes we've already obtained a Photo ID.
$photoId = "10210199026347451";

$sbPath = chilkat::CkStringBuilder->new();
$sbPath->Append("/v2.7/");
$sbPath->Append($photoId);

# First we're going to get the photo informaton so we can get the URL of the image file data.
# Select the fields we want.
# See https://developers.facebook.com/docs/graph-api/reference/photo/
$rest->AddQueryParam("fields","id,album,images");

$responseJson = $rest->fullRequestNoBody("GET",$sbPath->getAsString());
if ($rest->get_LastMethodSuccess() != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$json = chilkat::CkJsonObject->new();
$json->put_EmitCompact(0);
$json->Load($responseJson);

# Show the JSON in human-readable format.
print $json->emit() . "\r\n";

# Get the image URL.
$imageUrl = $json->stringOf("images[0].source");
print "Downloading from " . $imageUrl . "\r\n";

$sbImageUrl = chilkat::CkStringBuilder->new();
$sbImageUrl->Append($imageUrl);

# Build the output local file path.
$sbToPath = chilkat::CkStringBuilder->new();
$sbToPath->Append("qa_output/fb");
$sbToPath->Append($json->stringOf("id"));
$bCaseSensitive = 0;
if ($sbImageUrl->Contains(".jpg",$bCaseSensitive) == 1) {
    $sbToPath->Append(".jpg");
}
else {
    $sbToPath->Append(".png");
}

print "Downloading to " . $sbToPath->getAsString() . "\r\n";

# Download using Chilkat HTTP.
$http = chilkat::CkHttp->new();
$success = $http->Download($imageUrl,$sbToPath->getAsString());
if ($success != 1) {
    print $http->lastErrorText() . "\r\n";
}
else {
    print "Downloaded." . "\r\n";
}