Sample code for 30+ languages & platforms
Delphi ActiveX

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
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
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
end;