Sample code for 30+ languages & platforms
Dart

ETrade Renew Access Token

See more ETrade Examples

Renews an ETrade OAuth access token.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  http.oAuth1 = true;
  http.oAuthVerifier = '';
  http.oAuthConsumerKey = 'ETRADE_CONSUMER_KEY';
  http.oAuthConsumerSecret = 'ETRADE_CONSUMER_SECRET';

  // Load the access token previously obtained via the OAuth1 Authorization
  final jsonToken = CkJsonObject();
  try {
    jsonToken.loadFile('qa_data/tokens/etrade.json');
  } on ChilkatException {
    print('Failed to load OAuth1 token');
    return;
  }

  http.oAuthToken = jsonToken.stringOf('oauth_token');
  http.oAuthTokenSecret = jsonToken.stringOf('oauth_token_secret');

  final resp = CkHttpResponse();
  try {
    http.httpNoBody('GET', 'https://api.etrade.com/oauth/renew_access_token', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Make sure a successful response was received.
  if (resp.statusCode != 200) {
    print(resp.statusLine);
    print(resp.header);
    print(resp.bodyStr);
    return;
  }

  // If successful, the resp.BodyStr contains something like this:
  // oauth_token=%3TiQRgQCRGPo7Xdk6G8QDSEzX0Jsy6sKNcULcDavAGgU%3D&oauth_token_secret=%7RrC9scEpzcwSEMy4vE7nodSzPLqfRINnTNY4voczyFM%3D
  print(resp.bodyStr);

  final sbRespBody = CkStringBuilder();
  resp.getBodySb(sbRespBody);
  if (sbRespBody.contentsEqual('Access Token has been renewed', false)) {
    // The documentation at https://apisb.etrade.com/docs/api/authorization/renew_access_token.html
    // indicates that the response should be as described above.  However, the response received when
    // trying to refresh a non-expired token was "Access Token has been renewed"
    print('Keeping the same access token, but it\'s renewed...');
    return;
  }

  final hashTab = CkHashtable();
  hashTab.addQueryParams(resp.bodyStr);

  final accessToken = hashTab.lookupStr('oauth_token');
  final accessTokenSecret = hashTab.lookupStr('oauth_token_secret');

  // The access token + secret is what should be saved and used for
  // subsequent REST API calls.
  print('Access Token = $accessToken');
  print('Access Token Secret = $accessTokenSecret');

  // Save this access token for future calls.
  // Just in case we need user_id and screen_name, save those also..
  final json = CkJsonObject();
  json.appendString('oauth_token', accessToken);
  json.appendString('oauth_token_secret', accessTokenSecret);

  final fac = CkFileAccess();
  fac.writeEntireTextFile('qa_data/tokens/etrade.json', json.emit(), 'utf-8', false);

  print('Success.');
}