Objective-C
Objective-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 Objective-C Downloads
#import <NSString.h>
#import <CkoHttp.h>
#import <CkoHttpResponse.h>
#import <CkoHashtable.h>
#import <CkoJsonObject.h>
#import <CkoFileAccess.h>
#import <CkoStringBuilder.h>
#import <CkoOAuth2.h>
BOOL success = NO;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
NSString *consumerKey = @"ETRADE_CONSUMER_KEY";
NSString *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:
NSString *requestTokenUrl = @"https://apisb.etrade.com/oauth/request_token";
CkoHttp *http = [[CkoHttp alloc] init];
success = YES;
http.OAuth1 = YES;
http.OAuthConsumerKey = consumerKey;
http.OAuthConsumerSecret = consumerSecret;
http.OAuthCallback = @"oob";
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpNoBody: @"GET" url: requestTokenUrl response: resp];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
// If successful, the resp.BodyStr contains something like this:
// oauth_token=-Wa_KwAAAAAAxfEPAAABV8Qar4Q&oauth_token_secret=OfHY4tZBX2HK4f7yIw76WYdvnl99MVGB&oauth_callback_confirmed=true
NSLog(@"%@",resp.BodyStr);
CkoHashtable *hashTab = [[CkoHashtable alloc] init];
[hashTab AddQueryParams: resp.BodyStr];
NSString *requestToken = [hashTab LookupStr: @"oauth_token"];
NSString *requestTokenSecret = [hashTab LookupStr: @"oauth_token_secret"];
http.OAuthTokenSecret = requestTokenSecret;
NSLog(@"%@%@",@"oauth_token = ",requestToken);
NSLog(@"%@%@",@"oauth_token_secret = ",requestTokenSecret);
// Save this request token for the next step..
CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json AppendString: @"oauth_token" value: requestToken];
[json AppendString: @"oauth_token_secret" value: requestTokenSecret];
CkoFileAccess *fac = [[CkoFileAccess alloc] init];
[fac WriteEntireTextFile: @"qa_data/tokens/etrade_request_token.json" fileData: [json Emit] charset: @"utf-8" includePreamble: NO];
// ---------------------------------------------------------------------------
// 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.
NSString *authorizeUrl = @"https://us.etrade.com/e/t/etws/authorize";
CkoStringBuilder *sbUrlForBrowser = [[CkoStringBuilder alloc] init];
[sbUrlForBrowser Append: authorizeUrl];
[sbUrlForBrowser Append: @"?key="];
[sbUrlForBrowser Append: consumerKey];
[sbUrlForBrowser Append: @"&token="];
[sbUrlForBrowser Append: requestToken];
NSString *url = [sbUrlForBrowser GetAsString];
// Launch the system's default browser navigated to the URL.
CkoOAuth2 *oauth2 = [[CkoOAuth2 alloc] init];
success = [oauth2 LaunchBrowser: url];
if (success == NO) {
NSLog(@"%@",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.
// 