PureBasic
PureBasic
Paging User Photos with Cursor
See more Facebook Examples
Demonstrates how to iterate over the pages of user photos using a cursor.Chilkat PureBasic Downloads
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkOAuth2.pb"
Procedure ChilkatExample()
success.i = 0
; 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.i = CkOAuth2::ckCreate()
If oauth2.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkOAuth2::setCkAccessToken(oauth2, "FACEBOOK-ACCESS-TOKEN")
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to Facebook.
success = CkRest::ckConnect(rest,"graph.facebook.com",443,1,1)
If success <> 1
Debug CkRest::ckLastErrorText(rest)
CkOAuth2::ckDispose(oauth2)
CkRest::ckDispose(rest)
ProcedureReturn
EndIf
; Provide the authentication credentials (i.e. the access key)
CkRest::ckSetAuthOAuth2(rest,oauth2)
; Indicate that we only want the photos the user has personally uploaded.
CkRest::ckAddQueryParam(rest,"type","uploaded")
; We could limit the number of photos per page using the "limit" field.
CkRest::ckAddQueryParam(rest,"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.
responseJson.s = CkRest::ckFullRequestNoBody(rest,"GET","/v2.7/me/photos")
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkOAuth2::ckDispose(oauth2)
CkRest::ckDispose(rest)
ProcedureReturn
EndIf
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(json, 0)
CkJsonObject::ckLoad(json,responseJson)
Debug CkJsonObject::ckEmit(json)
;
; See Parsing the Facebook User Photos for code showing how to parse the JSON photos content.
;
; Get the "after" cursor.
afterCursor.s = CkJsonObject::ckStringOf(json,"paging.cursors.after")
While CkJsonObject::ckLastMethodSuccess(json) = 1
Debug "after cursor: " + afterCursor
; 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.
CkRest::ckClearAllQueryParams(rest)
CkRest::ckAddQueryParam(rest,"type","uploaded")
CkRest::ckAddQueryParam(rest,"limit","20")
CkRest::ckAddQueryParam(rest,"after",afterCursor)
responseJson = CkRest::ckFullRequestNoBody(rest,"GET","/v2.7/me/photos")
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkOAuth2::ckDispose(oauth2)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
CkJsonObject::ckLoad(json,responseJson)
; See Parsing the Facebook User Photos for code showing how to parse the JSON photos content.
Debug CkJsonObject::ckEmit(json)
; Get the cursor for the next page.
afterCursor = CkJsonObject::ckStringOf(json,"paging.cursors.after")
Wend
Debug "No more pages of photos."
CkOAuth2::ckDispose(oauth2)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure