Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

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 Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
consumerKey: WideString;
consumerSecret: WideString;
requestTokenUrl: WideString;
http: TChilkatHttp;
resp: TChilkatHttpResponse;
hashTab: TChilkatHashtable;
requestToken: WideString;
requestTokenSecret: WideString;
json: TChilkatJsonObject;
fac: TCkFileAccess;
authorizeUrl: WideString;
sbUrlForBrowser: TChilkatStringBuilder;
url: WideString;
oauth2: TChilkatOAuth2;

begin
success := 0;

//  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 := TChilkatHttp.Create(Self);
success := 1;

http.OAuth1 := 1;
http.OAuthConsumerKey := consumerKey;
http.OAuthConsumerSecret := consumerSecret;
http.OAuthCallback := 'oob';

resp := TChilkatHttpResponse.Create(Self);
success := http.HttpNoBody('GET',requestTokenUrl,resp.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

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

hashTab := TChilkatHashtable.Create(Self);
hashTab.AddQueryParams(resp.BodyStr);

requestToken := hashTab.LookupStr('oauth_token');
requestTokenSecret := hashTab.LookupStr('oauth_token_secret');
http.OAuthTokenSecret := requestTokenSecret;

Memo1.Lines.Add('oauth_token = ' + requestToken);
Memo1.Lines.Add('oauth_token_secret = ' + requestTokenSecret);

//  Save this request token for the next step..
json := TChilkatJsonObject.Create(Self);
json.AppendString('oauth_token',requestToken);
json.AppendString('oauth_token_secret',requestTokenSecret);

fac := TCkFileAccess.Create(Self);
fac.WriteEntireTextFile('qa_data/tokens/etrade_request_token.json',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.
authorizeUrl := 'https://us.etrade.com/e/t/etws/authorize';

sbUrlForBrowser := TChilkatStringBuilder.Create(Self);
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 := TChilkatOAuth2.Create(Self);
success := oauth2.LaunchBrowser(url);
if (success = 0) then
  begin
    Memo1.Lines.Add(oauth2.LastErrorText);
    Exit;
  end;

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