Delphi DLL
Delphi DLL
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 DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Hashtable, HttpResponse, OAuth2, FileAccess, JsonObject, StringBuilder, Http;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
consumerKey: PWideChar;
consumerSecret: PWideChar;
requestTokenUrl: PWideChar;
http: HCkHttp;
resp: HCkHttpResponse;
hashTab: HCkHashtable;
requestToken: PWideChar;
requestTokenSecret: PWideChar;
json: HCkJsonObject;
fac: HCkFileAccess;
authorizeUrl: PWideChar;
sbUrlForBrowser: HCkStringBuilder;
url: PWideChar;
oauth2: HCkOAuth2;
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 := CkHttp_Create();
success := True;
CkHttp_putOAuth1(http,True);
CkHttp_putOAuthConsumerKey(http,consumerKey);
CkHttp_putOAuthConsumerSecret(http,consumerSecret);
CkHttp_putOAuthCallback(http,'oob');
resp := CkHttpResponse_Create();
success := CkHttp_HttpNoBody(http,'GET',requestTokenUrl,resp);
if (success = False) then
begin
Memo1.Lines.Add(CkHttp__lastErrorText(http));
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(CkHttpResponse__bodyStr(resp));
hashTab := CkHashtable_Create();
CkHashtable_AddQueryParams(hashTab,CkHttpResponse__bodyStr(resp));
requestToken := CkHashtable__lookupStr(hashTab,'oauth_token');
requestTokenSecret := CkHashtable__lookupStr(hashTab,'oauth_token_secret');
CkHttp_putOAuthTokenSecret(http,requestTokenSecret);
Memo1.Lines.Add('oauth_token = ' + requestToken);
Memo1.Lines.Add('oauth_token_secret = ' + requestTokenSecret);
// Save this request token for the next step..
json := CkJsonObject_Create();
CkJsonObject_AppendString(json,'oauth_token',requestToken);
CkJsonObject_AppendString(json,'oauth_token_secret',requestTokenSecret);
fac := CkFileAccess_Create();
CkFileAccess_WriteEntireTextFile(fac,'qa_data/tokens/etrade_request_token.json',CkJsonObject__emit(json),'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 := CkStringBuilder_Create();
CkStringBuilder_Append(sbUrlForBrowser,authorizeUrl);
CkStringBuilder_Append(sbUrlForBrowser,'?key=');
CkStringBuilder_Append(sbUrlForBrowser,consumerKey);
CkStringBuilder_Append(sbUrlForBrowser,'&token=');
CkStringBuilder_Append(sbUrlForBrowser,requestToken);
url := CkStringBuilder__getAsString(sbUrlForBrowser);
// Launch the system's default browser navigated to the URL.
oauth2 := CkOAuth2_Create();
success := CkOAuth2_LaunchBrowser(oauth2,url);
if (success = False) then
begin
Memo1.Lines.Add(CkOAuth2__lastErrorText(oauth2));
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.
//
CkHttp_Dispose(http);
CkHttpResponse_Dispose(resp);
CkHashtable_Dispose(hashTab);
CkJsonObject_Dispose(json);
CkFileAccess_Dispose(fac);
CkStringBuilder_Dispose(sbUrlForBrowser);
CkOAuth2_Dispose(oauth2);
end;