Sample code for 30+ languages & platforms
Delphi DLL

Get Individual Photo Info

See more Facebook Examples

Assuming we have the ID of a Photo, this example demonstrates how to retrieve the photo information and parse the JSON.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, OAuth2, Rest, StringBuilder, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
oauth2: HCkOAuth2;
rest: HCkRest;
photoId: PWideChar;
sbPath: HCkStringBuilder;
responseJson: PWideChar;
json: HCkJsonObject;
canDelete: Boolean;
height: Integer;
width: Integer;

begin
success := False;

// 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 := CkOAuth2_Create();
CkOAuth2_putAccessToken(oauth2,'FACEBOOK-ACCESS-TOKEN');

rest := CkRest_Create();

// Connect to Facebook...
success := CkRest_Connect(rest,'graph.facebook.com',443,True,True);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

// Provide the authentication credentials (i.e. the access key)
CkRest_SetAuthOAuth2(rest,oauth2);

// Assumes we've already obtained a Photo ID.
photoId := '10210199026347451';

sbPath := CkStringBuilder_Create();
CkStringBuilder_Append(sbPath,'/v2.7/');
CkStringBuilder_Append(sbPath,photoId);

// Select the fields we want.
// This example will select many of the possible fields.
// See https://developers.facebook.com/docs/graph-api/reference/photo/
CkRest_AddQueryParam(rest,'fields','id,album,can_delete,can_tag,from,height,width,images,link,name,name_tags,picture,place,target');

responseJson := CkRest__fullRequestNoBody(rest,'GET',CkStringBuilder__getAsString(sbPath));
if (CkRest_getLastMethodSuccess(rest) <> True) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

json := CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,False);
CkJsonObject_Load(json,responseJson);

// Show the JSON in human-readable format.
Memo1.Lines.Add(CkJsonObject__emit(json));

// A sample response is shown below.
// Demonstrate how to parse values from the JSON.
Memo1.Lines.Add('Album name: ' + CkJsonObject__stringOf(json,'album.name'));
canDelete := CkJsonObject_BoolOf(json,'can_delete');
Memo1.Lines.Add('Can Delete: ' + IntToStr(Ord(canDelete)));
Memo1.Lines.Add('From Name: ' + CkJsonObject__stringOf(json,'from.name'));
height := CkJsonObject_IntOf(json,'height');
width := CkJsonObject_IntOf(json,'width');
Memo1.Lines.Add('Dimensions: ' + IntToStr(width) + 'x' + IntToStr(height));
Memo1.Lines.Add('First Image Source: ' + CkJsonObject__stringOf(json,'images[0].source'));

// A sample JSON response is shown here.  
// { 
//   "id": "10210199026347451",
//   "album": { 
//     "created_time": "2009-10-19T00:06:46+0000",
//     "name": "Timeline Photos",
//     "id": "1237223526054"
//   },
//   "can_delete": true,
//   "can_tag": true,
//   "from": { 
//     "name": "Matt Smith",
//     "id": "10224048320139890"
//   },
//   "height": 120,
//   "width": 120,
//   "images": [
//     { 
//       "height": 120,
//       "source": "https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/14462791_10210199026347451_7830642117574407060_n.jpg?oh=a7f9ed10cf9cd81a82adeb541c60e2e2&oe=58ABB195",
//       "width": 120
//     }
//   ],
//   "link": "https:\/\/www.facebook.com\/photo.php?fbid=10210199026347451&set=a.1237223526054.2038240.1093202869&type=3",
//   "name": "Ignore my posts -- I'm doing some testing for Facebook related programming...",
//   "picture": "https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/14462791_10210199026347451_7830642117574407060_n.jpg?oh=a7f9ed10cf9cd81a82adeb541c60e2e2&oe=58ABB195"
// }
// 

CkOAuth2_Dispose(oauth2);
CkRest_Dispose(rest);
CkStringBuilder_Dispose(sbPath);
CkJsonObject_Dispose(json);

end;