Unicode C++
Unicode C++
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 Unicode C++ Downloads
#include <CkHttpW.h>
#include <CkHttpResponseW.h>
#include <CkHashtableW.h>
#include <CkJsonObjectW.h>
#include <CkFileAccessW.h>
#include <CkStringBuilderW.h>
#include <CkOAuth2W.h>
void ChilkatSample(void)
{
bool success = false;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const wchar_t *consumerKey = L"ETRADE_CONSUMER_KEY";
const wchar_t *consumerSecret = L"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:
const wchar_t *requestTokenUrl = L"https://apisb.etrade.com/oauth/request_token";
CkHttpW http;
success = true;
http.put_OAuth1(true);
http.put_OAuthConsumerKey(consumerKey);
http.put_OAuthConsumerSecret(consumerSecret);
http.put_OAuthCallback(L"oob");
CkHttpResponseW resp;
success = http.HttpNoBody(L"GET",requestTokenUrl,resp);
if (success == false) {
wprintf(L"%s\n",http.lastErrorText());
return;
}
// If successful, the resp.BodyStr contains something like this:
// oauth_token=-Wa_KwAAAAAAxfEPAAABV8Qar4Q&oauth_token_secret=OfHY4tZBX2HK4f7yIw76WYdvnl99MVGB&oauth_callback_confirmed=true
wprintf(L"%s\n",resp.bodyStr());
CkHashtableW hashTab;
hashTab.AddQueryParams(resp.bodyStr());
const wchar_t *requestToken = hashTab.lookupStr(L"oauth_token");
const wchar_t *requestTokenSecret = hashTab.lookupStr(L"oauth_token_secret");
http.put_OAuthTokenSecret(requestTokenSecret);
wprintf(L"oauth_token = %s\n",requestToken);
wprintf(L"oauth_token_secret = %s\n",requestTokenSecret);
// Save this request token for the next step..
CkJsonObjectW json;
json.AppendString(L"oauth_token",requestToken);
json.AppendString(L"oauth_token_secret",requestTokenSecret);
CkFileAccessW fac;
fac.WriteEntireTextFile(L"qa_data/tokens/etrade_request_token.json",json.emit(),L"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.
const wchar_t *authorizeUrl = L"https://us.etrade.com/e/t/etws/authorize";
CkStringBuilderW sbUrlForBrowser;
sbUrlForBrowser.Append(authorizeUrl);
sbUrlForBrowser.Append(L"?key=");
sbUrlForBrowser.Append(consumerKey);
sbUrlForBrowser.Append(L"&token=");
sbUrlForBrowser.Append(requestToken);
const wchar_t *url = sbUrlForBrowser.getAsString();
// Launch the system's default browser navigated to the URL.
CkOAuth2W oauth2;
success = oauth2.LaunchBrowser(url);
if (success == false) {
wprintf(L"%s\n",oauth2.lastErrorText());
return;
}
// 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.
//
}