Unicode C++
Unicode C++
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 Unicode C++ Downloads
#include <CkOAuth2W.h>
#include <CkRestW.h>
#include <CkStringBuilderW.h>
#include <CkJsonObjectW.h>
#include <CkHttpW.h>
void ChilkatSample(void)
{
bool 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
CkOAuth2W oauth2;
oauth2.put_AccessToken(L"FACEBOOK-ACCESS-TOKEN");
CkRestW rest;
// Connect to Facebook...
success = rest.Connect(L"graph.facebook.com",443,true,true);
if (success != true) {
wprintf(L"%s\n",rest.lastErrorText());
return;
}
// Provide the authentication credentials (i.e. the access key)
rest.SetAuthOAuth2(oauth2);
// Assumes we've already obtained a Photo ID.
const wchar_t *photoId = L"10210199026347451";
CkStringBuilderW sbPath;
sbPath.Append(L"/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(L"fields",L"id,album,images");
const wchar_t *responseJson = rest.fullRequestNoBody(L"GET",sbPath.getAsString());
if (rest.get_LastMethodSuccess() != true) {
wprintf(L"%s\n",rest.lastErrorText());
return;
}
CkJsonObjectW json;
json.put_EmitCompact(false);
json.Load(responseJson);
// Show the JSON in human-readable format.
wprintf(L"%s\n",json.emit());
// Get the image URL.
const wchar_t *imageUrl = json.stringOf(L"images[0].source");
wprintf(L"Downloading from %s\n",imageUrl);
CkStringBuilderW sbImageUrl;
sbImageUrl.Append(imageUrl);
// Build the output local file path.
CkStringBuilderW sbToPath;
sbToPath.Append(L"qa_output/fb");
sbToPath.Append(json.stringOf(L"id"));
bool bCaseSensitive = false;
if (sbImageUrl.Contains(L".jpg",bCaseSensitive) == true) {
sbToPath.Append(L".jpg");
}
else {
sbToPath.Append(L".png");
}
wprintf(L"Downloading to %s\n",sbToPath.getAsString());
// Download using Chilkat HTTP.
CkHttpW http;
success = http.Download(imageUrl,sbToPath.getAsString());
if (success != true) {
wprintf(L"%s\n",http.lastErrorText());
}
else {
wprintf(L"Downloaded.\n");
}
}