DataFlex
DataFlex
ETrade OAuth1 Authorization (3-legged) Step 2
See more ETrade Examples
Demonstrates the final step in 3-legged OAuth1 authorization for the ETrade REST API. Example uses the OAuth1 verifier code that was copy-and-pasted from the browser in the 1st step. The end result of this final OAuth1 step is an access token that can be used to make ETrade REST API calls.See https://apisb.etrade.com/docs/api/authorization/get_access_token.html
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
String sConsumerKey
String sConsumerSecret
String sRequestTokenUrl
String sAuthorizeUrl
String sAccessTokenUrl
Handle hoHttp
Handle hoJsonRequestToken
String sRequestToken
String sRequestTokenSecret
Variant vResp
Handle hoResp
Handle hoHashTab
String sAccessToken
String sAccessTokenSecret
Handle hoJson
Handle hoFac
String sTemp1
Integer iTemp1
Move False To iSuccess
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move "ETRADE_CONSUMER_KEY" To sConsumerKey
Move "ETRADE_CONSUMER_SECRET" To sConsumerSecret
Move "https://apisb.etrade.com/oauth/request_token" To sRequestTokenUrl
Move "https://us.etrade.com/e/t/etws/authorize" To sAuthorizeUrl
Move "https://apisb.etrade.com/oauth/access_token" To sAccessTokenUrl
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Move True To iSuccess
Set ComOAuth1 Of hoHttp To True
Set ComOAuthConsumerKey Of hoHttp To sConsumerKey
Set ComOAuthConsumerSecret Of hoHttp To sConsumerSecret
Set ComOAuthCallback Of hoHttp To "oob"
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonRequestToken
If (Not(IsComObjectCreated(hoJsonRequestToken))) Begin
Send CreateComObject of hoJsonRequestToken
End
Get ComLoadFile Of hoJsonRequestToken "qa_data/tokens/etrade_request_token.json" To iSuccess
Get ComStringOf Of hoJsonRequestToken "oauth_token" To sRequestToken
Get ComStringOf Of hoJsonRequestToken "oauth_token_secret" To sRequestTokenSecret
// ------------------------------------------------------------------------------
// Exchange the OAuth Request Token for an OAuth Access Token.
Set ComOAuthToken Of hoHttp To sRequestToken
Set ComOAuthTokenSecret Of hoHttp To sRequestTokenSecret
// This is the verifier that was interactively copy-and-pasted from the browser back to our app.
Set ComOAuthVerifier Of hoHttp To "NJ07S"
// Use the explicit string "INCLUDE_OAUTH_TOKEN" to tell Chilkat to include the "oauth_token" param in the Authorization header field
Set ComUncommonOptions Of hoHttp To "INCLUDE_OAUTH_TOKEN"
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoResp to vResp
Get ComHttpNoBody Of hoHttp "GET" sAccessTokenUrl vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
// Make sure a successful response was received.
Get ComStatusCode Of hoResp To iTemp1
If (iTemp1 <> 200) Begin
Get ComStatusLine Of hoResp To sTemp1
Showln sTemp1
Get ComHeader Of hoResp To sTemp1
Showln sTemp1
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Procedure_Return
End
// If successful, the resp.BodyStr contains something like this:
// oauth_token=85123455-fF41296Bi3daM8eCo9Y5vZabcdxXpRv864plYPOjr&oauth_token_secret=afiYJOgabcdSfGae7BDvJVVTwys8fUGpra5guZxbmFBZo
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Get Create (RefClass(cComChilkatHashtable)) To hoHashTab
If (Not(IsComObjectCreated(hoHashTab))) Begin
Send CreateComObject of hoHashTab
End
Get ComBodyStr Of hoResp To sTemp1
Get ComAddQueryParams Of hoHashTab sTemp1 To iSuccess
Get ComLookupStr Of hoHashTab "oauth_token" To sAccessToken
Get ComLookupStr Of hoHashTab "oauth_token_secret" To sAccessTokenSecret
// The access token + secret is what should be saved and used for
// subsequent REST API calls.
Showln "Access Token = " sAccessToken
Showln "Access Token Secret = " sAccessTokenSecret
// Save this access token for future calls.
// Just in case we need user_id and screen_name, save those also..
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComAppendString Of hoJson "oauth_token" sAccessToken To iSuccess
Get ComAppendString Of hoJson "oauth_token_secret" sAccessTokenSecret To iSuccess
Get Create (RefClass(cComCkFileAccess)) To hoFac
If (Not(IsComObjectCreated(hoFac))) Begin
Send CreateComObject of hoFac
End
Get ComEmit Of hoJson To sTemp1
Get ComWriteEntireTextFile Of hoFac "qa_data/tokens/etrade.json" sTemp1 "utf-8" False To iSuccess
Showln "Success."
End_Procedure