Sample code for 30+ languages & platforms
Swift

Twitter - Get Follower IDs

Demonstrates how to get a list of follower IDs for a Twitter user. If the number of followers is more than can be returned in a single response, this example will use cursors to page through the followers.

This example is deprecated and no longer valid.

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 initial setup, which involves setting the OAuth1 properties and connecting
    // to api.twitter.com, is only required once at the beginning.  Once connected, the same
    // object instance may be re-used, and if necessary, it will automatically reconnect
    // as needed.

    // Assume we've previously obtained an access token and saved it to a JSON file..
    let json = CkoJsonObject()!
    success = json.loadFile(path: "qa_data/tokens/twitter.json")

    let rest = CkoRest()!
    let oauth1 = CkoOAuth1()!

    oauth1.consumerKey = "TWITTER_CONSUMER_KEY"
    oauth1.consumerSecret = "TWITTER_CONSUMER_SECRET"
    oauth1.token = json.string(of: "oauth_token")
    oauth1.tokenSecret = json.string(of: "oauth_token_secret")
    oauth1.signatureMethod = "HMAC-SHA1"
    oauth1.genNonce(numBytes: 16)

    rest.setAuthOAuth1(authProvider: oauth1, useQueryParams: false)

    var bAutoReconnect: Bool = true
    success = rest.connect(hostname: "api.twitter.com", port: 443, tls: true, autoReconnect: bAutoReconnect)
    if success != true {
        print("\(rest.lastErrorText!)")
        return
    }

    // This ends the initial setup...
    // ----------------------------------------------------------------------

    // This Twitter user has about 77.5K followers..
    rest.addQueryParam(name: "screen_name", value: "MarcusMiller959")

    let jsonResponse = CkoJsonObject()!
    jsonResponse.emitCompact = false

    // Get the 1st page of results using a cursor of "-1".
    let sbNextCursor = CkoStringBuilder()!
    sbNextCursor.setString(value: "-1")

    var pageNum: Int = 1
    var caseSensitive: Bool = false
    var bContinue: Bool = true
    // Get a maximum of 5 pages (of 5000 ids each).
    while bContinue == true {

        if sbNextCursor.contentsEqual(str: "0", caseSensitive: caseSensitive) == true {
            // This will cause the loop to exit..
            bContinue = false
        }
        else {
            // Adds or replaces the query param.
            rest.addQueryParam(name: "cursor", value: sbNextCursor.getAsString())

            // Get the next page of follower IDs
            var resp: String? = rest.fullRequestNoBody(httpVerb: "GET", uriPath: "/1.1/followers/ids.json")
            if rest.lastMethodSuccess != true {
                print("\(rest.lastErrorText!)")
                return
            }

            jsonResponse.load(json: resp)

            if rest.responseStatusCode.intValue != 200 {
                print("\(jsonResponse.emit()!)")
                return
            }

            // Show the number of IDs returned in this 
            var numIds: Int = jsonResponse.size(ofArray: "ids").intValue
            print("Page \(pageNum), Number of Ids: \(numIds)")

            // Show the 1st 10 ids in this page.
            var i: Int = 0
            while i < numIds {
                jsonResponse.i = i
                print("    \(i): \(jsonResponse.string(of: "ids[i]")!)")

                i = i + 1
                if i > 10 {
                    // Force the loop to exit.
                    i = numIds
                }

            }

            pageNum = pageNum + 1
            if pageNum > 5 {
                bContinue = false
            }
            else {
                sbNextCursor.setString(value: jsonResponse.string(of: "next_cursor_str"))
            }

        }

    }

    // A successful JSON response for the 1st page looks like this:

    // 	{
    // 	  "ids": [
    // 	    3140496044,
    // 	    793204773751324672,
    // 	    789951187781050369,
    // 	    763520773587922945,
    // 	    ...
    // 	    15031286,
    // 	    2668251246,
    // 	    3751659443
    // 	  ],
    // 	  "next_cursor": 1531680438812851153,
    // 	  "next_cursor_str": "1531680438812851153",
    // 	  "previous_cursor": 0,
    // 	  "previous_cursor_str": "0"
    // 	}

    // The output of this program looks like this:

    // 	Page 1, Number of Ids: 5000
    // 	    0: 931953350
    // 	    1: 786708055
    // 	    2: 560845700
    // 	    3: 3140496044
    // 	    4: 793204773751324672
    // 	    5: 789951187781050369
    // 	    6: 763520773587922945
    // 	    7: 793143274059988992
    // 	    8: 793139683412762624
    // 	    9: 1588222783
    // 	    10: 703821370778451968
    // 	Page 2, Number of Ids: 5000
    // 	    0: 15031286
    // 	    1: 2668251246
    // 	    2: 3751659443
    // 	    3: 3324584493
    // 	    4: 2440214809
    // 	    5: 1322335441
    // 	    6: 4439178393
    // 	    7: 4911573711
    // 	    8: 720792880080560128
    // 	    9: 720805087124267008
    // 	    10: 172926330
    // 	Page 3, Number of Ids: 5000
    // 	    0: 93867176
    // 	    1: 2992946183
    // 	    2: 2825296077
    // 	    3: 3784572861
    // 	    4: 2150051321
    // 	    5: 2460881603
    // 	    6: 4128849341
    // 	    7: 2234697931
    // 	    8: 2379418164
    // 	    9: 3425171542
    // 	    10: 325759186
    // 	Page 4, Number of Ids: 5000
    // 	    0: 22793412
    // 	    1: 3347750489
    // 	    2: 316923043
    // 	    3: 2481719196
    // 	    4: 3363591905
    // 	    5: 3238116492
    // 	    6: 58467130
    // 	    7: 3015182362
    // 	    8: 2985342719
    // 	    9: 3095965720
    // 	    10: 17505957
    // 	Page 5, Number of Ids: 5000
    // 	    0: 2541434684
    // 	    1: 140022957
    // 	    2: 134845054
    // 	    3: 772810508
    // 	    4: 16979294
    // 	    5: 2320540225
    // 	    6: 105439442
    // 	    7: 2796744529
    // 	    8: 251128801
    // 	    9: 350229758
    // 	    10: 2683994716
    // 

}