Sample code for 30+ languages & platforms
Swift

ETrade Renew Access Token

See more ETrade Examples

Renews an ETrade OAuth access token.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    // This requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    let http = CkoHttp()!

    http.oAuth1 = true
    http.oAuthVerifier = ""
    http.oAuthConsumerKey = "ETRADE_CONSUMER_KEY"
    http.oAuthConsumerSecret = "ETRADE_CONSUMER_SECRET"

    // Load the access token previously obtained via the OAuth1 Authorization
    let jsonToken = CkoJsonObject()!
    success = jsonToken.loadFile(path: "qa_data/tokens/etrade.json")
    if success != true {
        print("Failed to load OAuth1 token")
        return
    }

    http.oAuthToken = jsonToken.string(of: "oauth_token")
    http.oAuthTokenSecret = jsonToken.string(of: "oauth_token_secret")

    let resp = CkoHttpResponse()!
    success = http.httpNoBody(verb: "GET", url: "https://api.etrade.com/oauth/renew_access_token", response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    // Make sure a successful response was received.
    if resp.statusCode.intValue != 200 {
        print("\(resp.statusLine!)")
        print("\(resp.header!)")
        print("\(resp.bodyStr!)")
        return
    }

    // If successful, the resp.BodyStr contains something like this:
    // oauth_token=%3TiQRgQCRGPo7Xdk6G8QDSEzX0Jsy6sKNcULcDavAGgU%3D&oauth_token_secret=%7RrC9scEpzcwSEMy4vE7nodSzPLqfRINnTNY4voczyFM%3D
    print("\(resp.bodyStr!)")

    let sbRespBody = CkoStringBuilder()!
    resp.getBodySb(sb: sbRespBody)
    if sbRespBody.contentsEqual(str: "Access Token has been renewed", caseSensitive: false) {
        // The documentation at https://apisb.etrade.com/docs/api/authorization/renew_access_token.html
        // indicates that the response should be as described above.  However, the response received when
        // trying to refresh a non-expired token was "Access Token has been renewed"
        print("Keeping the same access token, but it's renewed...")
        return
    }

    let hashTab = CkoHashtable()!
    hashTab.addQueryParams(queryParams: resp.bodyStr)

    var accessToken: String? = hashTab.lookupStr(key: "oauth_token")
    var accessTokenSecret: String? = hashTab.lookupStr(key: "oauth_token_secret")

    // The access token + secret is what should be saved and used for
    // subsequent REST API calls.
    print("Access Token = \(accessToken!)")
    print("Access Token Secret = \(accessTokenSecret!)")

    // Save this access token for future calls.
    // Just in case we need user_id and screen_name, save those also..
    let json = CkoJsonObject()!
    json.appendString(name: "oauth_token", value: accessToken)
    json.appendString(name: "oauth_token_secret", value: accessTokenSecret)

    let fac = CkoFileAccess()!
    fac.writeEntireTextFile(path: "qa_data/tokens/etrade.json", fileData: json.emit(), charset: "utf-8", includePreamble: false)

    print("Success.")

}