Sample code for 30+ languages & platforms
React Native

ETrade Renew Access Token

See more ETrade Examples

Renews an ETrade OAuth access token.

Chilkat React Native Downloads

React Native
import { FileAccess, Hashtable, Http, HttpResponse, JsonObject, StringBuilder } from '@chilkat/react-native'

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

  const http = new Http();

  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
  const jsonToken = new JsonObject();
  try {
    jsonToken.loadFile('qa_data/tokens/etrade.json');
  } catch {
    console.log('Failed to load OAuth1 token');
    return;
  }

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

  const resp = new HttpResponse();
  try {
    await http.httpNoBodyAsync('GET', 'https://api.etrade.com/oauth/renew_access_token', resp);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

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

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

  const sbRespBody = new StringBuilder();
  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"
    console.log('Keeping the same access token, but it\'s renewed...');
    return;
  }

  const hashTab = new Hashtable();
  hashTab.addQueryParams(resp.bodyStr);

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

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

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

  const fac = new FileAccess();
  fac.writeEntireTextFile('qa_data/tokens/etrade.json', json.emit(), 'utf-8', false);

  console.log('Success.');
}