Sample code for 30+ languages & platforms
Go

Paging User Photos with Cursor

See more Facebook Examples

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

Chilkat Go Downloads

Go
    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 := chilkat.NewOAuth2()
    oauth2.SetAccessToken("FACEBOOK-ACCESS-TOKEN")

    rest := chilkat.NewRest()

    // Connect to Facebook.
    success = rest.Connect("graph.facebook.com",443,true,true)
    if success != true {
        fmt.Println(rest.LastErrorText())
        oauth2.DisposeOAuth2()
        rest.DisposeRest()
        return
    }

    // Provide the authentication credentials (i.e. the access key)
    rest.SetAuthOAuth2(oauth2)

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

    // We could limit the number of photos per page using the "limit" field.
    rest.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.
    responseJson := rest.FullRequestNoBody("GET","/v2.7/me/photos")
    if rest.LastMethodSuccess() != true {
        fmt.Println(rest.LastErrorText())
        oauth2.DisposeOAuth2()
        rest.DisposeRest()
        return
    }

    json := chilkat.NewJsonObject()
    json.SetEmitCompact(false)
    json.Load(*responseJson)
    fmt.Println(*json.Emit())

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

    // Get the "after" cursor.
    afterCursor := json.StringOf("paging.cursors.after")
    for json.LastMethodSuccess() == true {

        fmt.Println("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("type","uploaded")
        rest.AddQueryParam("limit","20")
        rest.AddQueryParam("after",*afterCursor)

        responseJson = rest.FullRequestNoBody("GET","/v2.7/me/photos")
        if rest.LastMethodSuccess() != true {
            fmt.Println(rest.LastErrorText())
            oauth2.DisposeOAuth2()
            rest.DisposeRest()
            json.DisposeJsonObject()
            return
        }

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

        fmt.Println(*json.Emit())

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

    fmt.Println("No more pages of photos.")

    oauth2.DisposeOAuth2()
    rest.DisposeRest()
    json.DisposeJsonObject()