Sample code for 30+ languages & platforms
Lianja

Paging User Photos with Cursor

See more Facebook Examples

Demonstrates how to iterate over the pages of user photos using a cursor.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// 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
loOauth2 = createobject("CkOAuth2")
loOauth2.AccessToken = "FACEBOOK-ACCESS-TOKEN"

loRest = createobject("CkRest")

// Connect to Facebook.
llSuccess = loRest.Connect("graph.facebook.com",443,.T.,.T.)
if (llSuccess <> .T.) then
    ? loRest.LastErrorText
    release loOauth2
    release loRest
    return
endif

// Provide the authentication credentials (i.e. the access key)
loRest.SetAuthOAuth2(loOauth2)

// Indicate that we only want the photos the user has personally uploaded.
loRest.AddQueryParam("type","uploaded")

// We could limit the number of photos per page using the "limit" field.
loRest.AddQueryParam("limit","20")

// Get 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.
lcResponseJson = loRest.FullRequestNoBody("GET","/v2.7/me/photos")
if (loRest.LastMethodSuccess <> .T.) then
    ? loRest.LastErrorText
    release loOauth2
    release loRest
    return
endif

loJson = createobject("CkJsonObject")
loJson.EmitCompact = .F.
loJson.Load(lcResponseJson)
? loJson.Emit()

// 
// See Parsing the Facebook User Photos for code showing how to parse the JSON photos content.
// 

// Get the "after" cursor.
lcAfterCursor = loJson.StringOf("paging.cursors.after")
do while loJson.LastMethodSuccess = .T.

    ? "after cursor: " + lcAfterCursor

    // Prepare for getting the next page of photos.
    // We can continue using the same REST object.
    // If already connected, we'll continue using the existing connection.
    // Otherwise, a new connection will automatically be made if needed.
    loRest.ClearAllQueryParams()
    loRest.AddQueryParam("type","uploaded")
    loRest.AddQueryParam("limit","20")
    loRest.AddQueryParam("after",lcAfterCursor)

    lcResponseJson = loRest.FullRequestNoBody("GET","/v2.7/me/photos")
    if (loRest.LastMethodSuccess <> .T.) then
        ? loRest.LastErrorText
        release loOauth2
        release loRest
        release loJson
        return
    endif

    loJson.Load(lcResponseJson)
    // See Parsing the Facebook User Photos for code showing how to parse the JSON photos content.

    ? loJson.Emit()

    // Get the cursor for the next page.
    lcAfterCursor = loJson.StringOf("paging.cursors.after")
enddo

? "No more pages of photos."


release loOauth2
release loRest
release loJson