Sample code for 30+ languages & platforms
PowerBuilder

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

PowerBuilder
integer li_rc
integer li_Success
string ls_ConsumerKey
string ls_ConsumerSecret
string ls_RequestTokenUrl
oleobject loo_Http
oleobject loo_Resp
oleobject loo_HashTab
string ls_RequestToken
string ls_RequestTokenSecret
oleobject loo_Json
oleobject loo_Fac
string ls_AuthorizeUrl
oleobject loo_SbUrlForBrowser
string ls_Url
oleobject loo_Oauth2

li_Success = 0

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

ls_ConsumerKey = "ETRADE_CONSUMER_KEY"
ls_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:
ls_RequestTokenUrl = "https://apisb.etrade.com/oauth/request_token"

loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
    destroy loo_Http
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = 1

loo_Http.OAuth1 = 1
loo_Http.OAuthConsumerKey = ls_ConsumerKey
loo_Http.OAuthConsumerSecret = ls_ConsumerSecret
loo_Http.OAuthCallback = "oob"

loo_Resp = create oleobject
li_rc = loo_Resp.ConnectToNewObject("Chilkat.HttpResponse")

li_Success = loo_Http.HttpNoBody("GET",ls_RequestTokenUrl,loo_Resp)
if li_Success = 0 then
    Write-Debug loo_Http.LastErrorText
    destroy loo_Http
    destroy loo_Resp
    return
end if

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

loo_HashTab = create oleobject
li_rc = loo_HashTab.ConnectToNewObject("Chilkat.Hashtable")

loo_HashTab.AddQueryParams(loo_Resp.BodyStr)

ls_RequestToken = loo_HashTab.LookupStr("oauth_token")
ls_RequestTokenSecret = loo_HashTab.LookupStr("oauth_token_secret")
loo_Http.OAuthTokenSecret = ls_RequestTokenSecret

Write-Debug "oauth_token = " + ls_RequestToken
Write-Debug "oauth_token_secret = " + ls_RequestTokenSecret

// Save this request token for the next step..
loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")

loo_Json.AppendString("oauth_token",ls_RequestToken)
loo_Json.AppendString("oauth_token_secret",ls_RequestTokenSecret)

loo_Fac = create oleobject
li_rc = loo_Fac.ConnectToNewObject("Chilkat.FileAccess")

loo_Fac.WriteEntireTextFile("qa_data/tokens/etrade_request_token.json",loo_Json.Emit(),"utf-8",0)

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

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

loo_SbUrlForBrowser = create oleobject
li_rc = loo_SbUrlForBrowser.ConnectToNewObject("Chilkat.StringBuilder")

loo_SbUrlForBrowser.Append(ls_AuthorizeUrl)
loo_SbUrlForBrowser.Append("?key=")
loo_SbUrlForBrowser.Append(ls_ConsumerKey)
loo_SbUrlForBrowser.Append("&token=")
loo_SbUrlForBrowser.Append(ls_RequestToken)
ls_Url = loo_SbUrlForBrowser.GetAsString()

// Launch the system's default browser navigated to the URL.
loo_Oauth2 = create oleobject
li_rc = loo_Oauth2.ConnectToNewObject("Chilkat.OAuth2")

li_Success = loo_Oauth2.LaunchBrowser(ls_Url)
if li_Success = 0 then
    Write-Debug loo_Oauth2.LastErrorText
    destroy loo_Http
    destroy loo_Resp
    destroy loo_HashTab
    destroy loo_Json
    destroy loo_Fac
    destroy loo_SbUrlForBrowser
    destroy loo_Oauth2
    return
end if

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


destroy loo_Http
destroy loo_Resp
destroy loo_HashTab
destroy loo_Json
destroy loo_Fac
destroy loo_SbUrlForBrowser
destroy loo_Oauth2