Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
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 Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Hashtable,
Chilkat.HttpResponse,
Chilkat.OAuth2,
Chilkat.FileAccess,
Chilkat.JsonObject,
Chilkat.StringBuilder,
Chilkat.Http;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
consumerKey: string;
consumerSecret: string;
requestTokenUrl: string;
http: THttp;
resp: THttpResponse;
hashTab: THashtable;
requestToken: string;
requestTokenSecret: string;
json: TJsonObject;
fac: TFileAccess;
authorizeUrl: string;
sbUrlForBrowser: TStringBuilder;
url: string;
oauth2: TOAuth2;
begin
success := False;
// 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 := THttp.Create;
success := True;
http.OAuth1 := True;
http.OAuthConsumerKey := consumerKey;
http.OAuthConsumerSecret := consumerSecret;
http.OAuthCallback := 'oob';
resp := THttpResponse.Create;
success := http.HttpNoBody('GET',requestTokenUrl,resp);
if (success = False) then
begin
WriteLn(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
WriteLn(resp.BodyStr);
hashTab := THashtable.Create;
hashTab.AddQueryParams(resp.BodyStr);
requestToken := hashTab.LookupStr('oauth_token');
requestTokenSecret := hashTab.LookupStr('oauth_token_secret');
http.OAuthTokenSecret := requestTokenSecret;
WriteLn('oauth_token = ' + requestToken);
WriteLn('oauth_token_secret = ' + requestTokenSecret);
// Save this request token for the next step..
json := TJsonObject.Create;
json.AppendString('oauth_token',requestToken);
json.AppendString('oauth_token_secret',requestTokenSecret);
fac := TFileAccess.Create;
fac.WriteEntireTextFile('qa_data/tokens/etrade_request_token.json',json.Emit(),'utf-8',False);
// ---------------------------------------------------------------------------
// 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 := TStringBuilder.Create;
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 := TOAuth2.Create;
success := oauth2.LaunchBrowser(url);
if (success = False) then
begin
WriteLn(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.
//
http.Free;
resp.Free;
hashTab.Free;
json.Free;
fac.Free;
sbUrlForBrowser.Free;
oauth2.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.