Sample code for 30+ languages & platforms
Swift

Paging User Photos with Cursor

See more Facebook Examples

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

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = 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
    let oauth2 = CkoOAuth2()!
    oauth2.accessToken = "FACEBOOK-ACCESS-TOKEN"

    let rest = CkoRest()!

    // Connect to Facebook.
    success = rest.connect(hostname: "graph.facebook.com", port: 443, tls: true, autoReconnect: true)
    if success != true {
        print("\(rest.lastErrorText!)")
        return
    }

    // Provide the authentication credentials (i.e. the access key)
    rest.setAuthOAuth2(authProvider: oauth2)

    // Indicate that we only want the photos the user has personally uploaded.
    rest.addQueryParam(name: "type", value: "uploaded")

    // We could limit the number of photos per page using the "limit" field.
    rest.addQueryParam(name: "limit", value: "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.
    var responseJson: String? = rest.fullRequestNoBody(httpVerb: "GET", uriPath: "/v2.7/me/photos")
    if rest.lastMethodSuccess != true {
        print("\(rest.lastErrorText!)")
        return
    }

    let json = CkoJsonObject()!
    json.emitCompact = false
    json.load(json: responseJson)
    print("\(json.emit()!)")

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

    // Get the "after" cursor.
    var afterCursor: String? = json.string(of: "paging.cursors.after")
    while json.lastMethodSuccess == true {

        print("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.
        rest.clearAllQueryParams()
        rest.addQueryParam(name: "type", value: "uploaded")
        rest.addQueryParam(name: "limit", value: "20")
        rest.addQueryParam(name: "after", value: afterCursor)

        responseJson = rest.fullRequestNoBody(httpVerb: "GET", uriPath: "/v2.7/me/photos")
        if rest.lastMethodSuccess != true {
            print("\(rest.lastErrorText!)")
            return
        }

        json.load(json: responseJson)
        // See Parsing the Facebook User Photos for code showing how to parse the JSON photos content.

        print("\(json.emit()!)")

        // Get the cursor for the next page.
        afterCursor = json.string(of: "paging.cursors.after")
    }

    print("No more pages of photos.")

}