DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vOauth2
Handle hoOauth2
Handle hoRest
String sPhotoId
Handle hoSbPath
String sResponseJson
Handle hoJson
String sImageUrl
Handle hoSbImageUrl
Handle hoSbToPath
Boolean iBCaseSensitive
Handle hoHttp
String sTemp1
Boolean bTemp1
Move False To iSuccess
// 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
Get Create (RefClass(cComChilkatOAuth2)) To hoOauth2
If (Not(IsComObjectCreated(hoOauth2))) Begin
Send CreateComObject of hoOauth2
End
Set ComAccessToken Of hoOauth2 To "FACEBOOK-ACCESS-TOKEN"
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect to Facebook...
Get ComConnect Of hoRest "graph.facebook.com" 443 True True To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// Provide the authentication credentials (i.e. the access key)
Get pvComObject of hoOauth2 to vOauth2
Get ComSetAuthOAuth2 Of hoRest vOauth2 To iSuccess
// Assumes we've already obtained a Photo ID.
Move "10210199026347451" To sPhotoId
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbPath
If (Not(IsComObjectCreated(hoSbPath))) Begin
Send CreateComObject of hoSbPath
End
Get ComAppend Of hoSbPath "/v2.7/" To iSuccess
Get ComAppend Of hoSbPath sPhotoId To iSuccess
// 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/
Get ComAddQueryParam Of hoRest "fields" "id,album,images" To iSuccess
Get ComGetAsString Of hoSbPath To sTemp1
Get ComFullRequestNoBody Of hoRest "GET" sTemp1 To sResponseJson
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Set ComEmitCompact Of hoJson To False
Get ComLoad Of hoJson sResponseJson To iSuccess
// Show the JSON in human-readable format.
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// Get the image URL.
Get ComStringOf Of hoJson "images[0].source" To sImageUrl
Showln "Downloading from " sImageUrl
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbImageUrl
If (Not(IsComObjectCreated(hoSbImageUrl))) Begin
Send CreateComObject of hoSbImageUrl
End
Get ComAppend Of hoSbImageUrl sImageUrl To iSuccess
// Build the output local file path.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToPath
If (Not(IsComObjectCreated(hoSbToPath))) Begin
Send CreateComObject of hoSbToPath
End
Get ComAppend Of hoSbToPath "qa_output/fb" To iSuccess
Get ComStringOf Of hoJson "id" To sTemp1
Get ComAppend Of hoSbToPath sTemp1 To iSuccess
Move False To iBCaseSensitive
Get ComContains Of hoSbImageUrl ".jpg" iBCaseSensitive To bTemp1
If (bTemp1 = True) Begin
Get ComAppend Of hoSbToPath ".jpg" To iSuccess
End
Else Begin
Get ComAppend Of hoSbToPath ".png" To iSuccess
End
Get ComGetAsString Of hoSbToPath To sTemp1
Showln "Downloading to " sTemp1
// Download using Chilkat HTTP.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get ComGetAsString Of hoSbToPath To sTemp1
Get ComDownload Of hoHttp sImageUrl sTemp1 To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
End
Else Begin
Showln "Downloaded."
End
End_Procedure