C
C
Get the Photos for a User
See more Facebook Examples
Demonstrates how to get the photos that the user has uploaded.Chilkat C Downloads
#include <C_CkOAuth2.h>
#include <C_CkRest.h>
#include <C_CkJsonObject.h>
#include <C_CkDateTime.h>
#include <C_CkDtObj.h>
void ChilkatSample(void)
{
BOOL success;
HCkOAuth2 oauth2;
HCkRest rest;
const char *responseJson;
HCkJsonObject json;
HCkDateTime dtime;
BOOL bLocalTime;
HCkDtObj dt;
int i;
int numItems;
const char *name;
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 == FALSE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkOAuth2_Dispose(oauth2);
CkRest_Dispose(rest);
return;
}
// Provide the authentication credentials (i.e. the access key)
CkRest_SetAuthOAuth2(rest,oauth2);
// Indicate that we only want the photos the user has personally uploaded.
CkRest_AddQueryParam(rest,"type","uploaded");
// We could limit the number of photos by setting a limit.
CkRest_AddQueryParam(rest,"limit","5");
// Gets the 1st page of photos. (Not the actual image data, but the information about each photo.)
// See https://developers.facebook.com/docs/graph-api/reference/user/photos/ for more information.
responseJson = CkRest_fullRequestNoBody(rest,"GET","/v2.7/me/photos");
if (CkRest_getLastMethodSuccess(rest) == FALSE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkOAuth2_Dispose(oauth2);
CkRest_Dispose(rest);
return;
}
json = CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,FALSE);
CkJsonObject_Load(json,responseJson);
printf("%s\n",CkJsonObject_emit(json));
// A sample JSON response is shown below.
// This is the code to parse the JSON response.
dtime = CkDateTime_Create();
bLocalTime = TRUE;
dt = CkDtObj_Create();
i = 0;
numItems = CkJsonObject_SizeOfArray(json,"data");
while (i < numItems) {
CkJsonObject_putI(json,i);
printf("--- %d\n",i);
name = CkJsonObject_stringOf(json,"data[i].name");
if (CkJsonObject_getLastMethodSuccess(json) == TRUE) {
printf("name: %s\n",name);
}
printf("id: %s\n",CkJsonObject_stringOf(json,"data[i].id"));
// We can load the created_time into a CkDateTime...
CkDateTime_SetFromTimestamp(dtime,CkJsonObject_stringOf(json,"data[i].created_time"));
CkDateTime_ToDtObj(dtime,bLocalTime,dt);
printf("%d/%d/%d %d:%d\n",CkDtObj_getMonth(dt),CkDtObj_getDay(dt),CkDtObj_getYear(dt),CkDtObj_getHour(dt),CkDtObj_getMinute(dt));
i = i + 1;
}
// We can get the paging information as follows:
printf("URL for next page: %s\n",CkJsonObject_stringOf(json,"paging.next"));
printf("before cursor: %s\n",CkJsonObject_stringOf(json,"paging.cursors.before"));
printf("after cursor: %s\n",CkJsonObject_stringOf(json,"paging.cursors.after"));
// This is a sample JSON response:
// {
// "data": [
// {
// "created_time": "2016-09-29T20:46:18+0000",
// "name": "Ignore my posts -- I'm doing some testing for Facebook related programming...",
// "id": "10210199026347451"
// },
// {
// "created_time": "2016-09-19T02:00:42+0000",
// "id": "10210091531240138"
// },
// {
// "created_time": "2016-09-19T02:00:42+0000",
// "id": "10210091520620125"
// },
// {
// "created_time": "2016-09-19T01:59:46+0000",
// "name": "I would've went for a swim had it not been for the sign",
// "id": "10210091522299917"
// },
// {
// "created_time": "2016-09-12T00:37:35+0000",
// "id": "10210023316834798"
// }
// ],
// "paging": {
// "cursors": {
// "before": "MTAyMTAxOTkwMjYzNDc0NTEZD",
// "after": "MTAyMTAwMjMzMTU4MzQ3OTgZD"
// },
// "next": "https:\/\/graph.facebook.com\/v2.7\/10224048320139890\/photos?type=uploaded&limit=5&after=MTAyMTAwMjMzMTU4MzQ3OTgZD"
// }
// }
//
CkOAuth2_Dispose(oauth2);
CkRest_Dispose(rest);
CkJsonObject_Dispose(json);
CkDateTime_Dispose(dtime);
CkDtObj_Dispose(dt);
}