Sample code for 30+ languages & platforms
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 C++ Downloads

C++
#include <CkHttp.h>
#include <CkHttpResponse.h>
#include <CkHashtable.h>
#include <CkJsonObject.h>
#include <CkFileAccess.h>
#include <CkStringBuilder.h>
#include <CkOAuth2.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 char *consumerKey = "ETRADE_CONSUMER_KEY";
    const char *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:
    const char *requestTokenUrl = "https://apisb.etrade.com/oauth/request_token";

    CkHttp http;
    success = true;

    http.put_OAuth1(true);
    http.put_OAuthConsumerKey(consumerKey);
    http.put_OAuthConsumerSecret(consumerSecret);
    http.put_OAuthCallback("oob");

    CkHttpResponse resp;
    success = http.HttpNoBody("GET",requestTokenUrl,resp);
    if (success == false) {
        std::cout << http.lastErrorText() << "\r\n";
        return;
    }

    //  If successful, the resp.BodyStr contains something like this:  
    //  oauth_token=-Wa_KwAAAAAAxfEPAAABV8Qar4Q&oauth_token_secret=OfHY4tZBX2HK4f7yIw76WYdvnl99MVGB&oauth_callback_confirmed=true
    std::cout << resp.bodyStr() << "\r\n";

    CkHashtable hashTab;
    hashTab.AddQueryParams(resp.bodyStr());

    const char *requestToken = hashTab.lookupStr("oauth_token");
    const char *requestTokenSecret = hashTab.lookupStr("oauth_token_secret");
    http.put_OAuthTokenSecret(requestTokenSecret);

    std::cout << "oauth_token = " << requestToken << "\r\n";
    std::cout << "oauth_token_secret = " << requestTokenSecret << "\r\n";

    //  Save this request token for the next step..
    CkJsonObject json;
    json.AppendString("oauth_token",requestToken);
    json.AppendString("oauth_token_secret",requestTokenSecret);

    CkFileAccess fac;
    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.
    const char *authorizeUrl = "https://us.etrade.com/e/t/etws/authorize";

    CkStringBuilder sbUrlForBrowser;
    sbUrlForBrowser.Append(authorizeUrl);
    sbUrlForBrowser.Append("?key=");
    sbUrlForBrowser.Append(consumerKey);
    sbUrlForBrowser.Append("&token=");
    sbUrlForBrowser.Append(requestToken);
    const char *url = sbUrlForBrowser.getAsString();

    //  Launch the system's default browser navigated to the URL.
    CkOAuth2 oauth2;
    success = oauth2.LaunchBrowser(url);
    if (success == false) {
        std::cout << oauth2.lastErrorText() << "\r\n";
        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.

    //  image
    }