Sample code for 30+ languages & platforms
Go

ETrade OAuth1 Authorization (3-legged) Step 1

See more ETrade Examples

Demonstrates the first step in 3-legged OAuth1 authorization for the ETrade REST API. This example sends an HTTP request to the "request token URL" to get a request token that begins the OAuth1 process. (See https://apisb.etrade.com/docs/api/authorization/request_token.html )

This example uses the sandbox request token URL. The live request token URL would be "https://api.etrade.com/oauth/request_token".

Chilkat Go Downloads

Go
    success := false

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

    consumerKey := "ETRADE_CONSUMER_KEY"
    consumerSecret := "ETRADE_CONSUMER_SECRET"

    // Note: This example uses the sandbox request token URL.
    // The live Get Request Token Request URL is:
    // https://api.etrade.com/oauth/request_token
    // This example will use the Sandbox Token Request URL:
    requestTokenUrl := "https://apisb.etrade.com/oauth/request_token"

    http := chilkat.NewHttp()
    success = true

    http.SetOAuth1(true)
    http.SetOAuthConsumerKey(consumerKey)
    http.SetOAuthConsumerSecret(consumerSecret)
    http.SetOAuthCallback("oob")

    resp := chilkat.NewHttpResponse()
    success = http.HttpNoBody("GET",requestTokenUrl,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        resp.DisposeHttpResponse()
        return
    }

    // If successful, the resp.BodyStr contains something like this:  
    // oauth_token=-Wa_KwAAAAAAxfEPAAABV8Qar4Q&oauth_token_secret=OfHY4tZBX2HK4f7yIw76WYdvnl99MVGB&oauth_callback_confirmed=true
    fmt.Println(resp.BodyStr())

    hashTab := chilkat.NewHashtable()
    hashTab.AddQueryParams(resp.BodyStr())

    requestToken := hashTab.LookupStr("oauth_token")
    requestTokenSecret := hashTab.LookupStr("oauth_token_secret")
    http.SetOAuthTokenSecret(*requestTokenSecret)

    fmt.Println("oauth_token = ", *requestToken)
    fmt.Println("oauth_token_secret = ", *requestTokenSecret)

    // Save this request token for the next step..
    json := chilkat.NewJsonObject()
    json.AppendString("oauth_token",*requestToken)
    json.AppendString("oauth_token_secret",*requestTokenSecret)

    fac := chilkat.NewFileAccess()
    fac.WriteEntireTextFile("qa_data/tokens/etrade_request_token.json",*json.Emit(),"utf-8",false)

    // ---------------------------------------------------------------------------

    // The next step is to form a URL to send to the authorizeUrl
    // This is an HTTP GET that we load into a popup browser.
    authorizeUrl := "https://us.etrade.com/e/t/etws/authorize"

    sbUrlForBrowser := chilkat.NewStringBuilder()
    sbUrlForBrowser.Append(authorizeUrl)
    sbUrlForBrowser.Append("?key=")
    sbUrlForBrowser.Append(consumerKey)
    sbUrlForBrowser.Append("&token=")
    sbUrlForBrowser.Append(*requestToken)
    url := sbUrlForBrowser.GetAsString()

    // Launch the system's default browser navigated to the URL.
    oauth2 := chilkat.NewOAuth2()
    success = oauth2.LaunchBrowser(*url)
    if success == false {
        fmt.Println(oauth2.LastErrorText())
        http.DisposeHttp()
        resp.DisposeHttpResponse()
        hashTab.DisposeHashtable()
        json.DisposeJsonObject()
        fac.DisposeFileAccess()
        sbUrlForBrowser.DisposeStringBuilder()
        oauth2.DisposeOAuth2()
        return
    }

    // The ETrade account owner will login and grant access to the application.
    // A short verifier code will be displayed (as shown below), and this must be copy-and-pasted
    // into the next step to Complete the 3-legged OAuth1 Authorization 

    // Note: The browser will NOT automatically direct you to the next page.
    // You should copy the verifier code, close the browser, and then paste the verifier
    // code into your application.

    // image

    http.DisposeHttp()
    resp.DisposeHttpResponse()
    hashTab.DisposeHashtable()
    json.DisposeJsonObject()
    fac.DisposeFileAccess()
    sbUrlForBrowser.DisposeStringBuilder()
    oauth2.DisposeOAuth2()