Sample code for 30+ languages & platforms
Lianja

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 Lianja Downloads

Lianja
llSuccess = .F.

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

lcConsumerKey = "ETRADE_CONSUMER_KEY"
lcConsumerSecret = "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:
lcRequestTokenUrl = "https://apisb.etrade.com/oauth/request_token"

loHttp = createobject("CkHttp")
llSuccess = .T.

loHttp.OAuth1 = .T.
loHttp.OAuthConsumerKey = lcConsumerKey
loHttp.OAuthConsumerSecret = lcConsumerSecret
loHttp.OAuthCallback = "oob"

loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpNoBody("GET",lcRequestTokenUrl,loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loResp
    return
endif

// If successful, the resp.BodyStr contains something like this:  
// oauth_token=-Wa_KwAAAAAAxfEPAAABV8Qar4Q&oauth_token_secret=OfHY4tZBX2HK4f7yIw76WYdvnl99MVGB&oauth_callback_confirmed=true
? loResp.BodyStr

loHashTab = createobject("CkHashtable")
loHashTab.AddQueryParams(loResp.BodyStr)

lcRequestToken = loHashTab.LookupStr("oauth_token")
lcRequestTokenSecret = loHashTab.LookupStr("oauth_token_secret")
loHttp.OAuthTokenSecret = lcRequestTokenSecret

? "oauth_token = " + lcRequestToken
? "oauth_token_secret = " + lcRequestTokenSecret

// Save this request token for the next step..
loJson = createobject("CkJsonObject")
loJson.AppendString("oauth_token",lcRequestToken)
loJson.AppendString("oauth_token_secret",lcRequestTokenSecret)

loFac = createobject("CkFileAccess")
loFac.WriteEntireTextFile("qa_data/tokens/etrade_request_token.json",loJson.Emit(),"utf-8",.F.)

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

// 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.
lcAuthorizeUrl = "https://us.etrade.com/e/t/etws/authorize"

loSbUrlForBrowser = createobject("CkStringBuilder")
loSbUrlForBrowser.Append(lcAuthorizeUrl)
loSbUrlForBrowser.Append("?key=")
loSbUrlForBrowser.Append(lcConsumerKey)
loSbUrlForBrowser.Append("&token=")
loSbUrlForBrowser.Append(lcRequestToken)
lcUrl = loSbUrlForBrowser.GetAsString()

// Launch the system's default browser navigated to the URL.
loOauth2 = createobject("CkOAuth2")
llSuccess = loOauth2.LaunchBrowser(lcUrl)
if (llSuccess = .F.) then
    ? loOauth2.LastErrorText
    release loHttp
    release loResp
    release loHashTab
    release loJson
    release loFac
    release loSbUrlForBrowser
    release loOauth2
    return
endif

// 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


release loHttp
release loResp
release loHashTab
release loJson
release loFac
release loSbUrlForBrowser
release loOauth2