0.1.4 • Published 5 years ago

janrain-login-client-sdk v0.1.4

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

Janrain Login Client SDK

An SDK to interface with Janrain's Authorization API providing reasonable defaults.

Configuration

const Janrain =  require('janrain-login-client-sdk');

const defaults = {
  client_id: '1234567890',
  flow: 'standard',
  flow_version: '1234567890',
  locale: 'en-US',
  redirect_uri: 'http://localhost:3000',
}

const config = {
  url: 'https://YOUR_APP_NAME.janraincapture.com',
  defaults,
};

const options = {
  timeout: 5000,
};

const client = new Janrain(config, options);

Usage

async function register(firstName, lastName, email, password) {
  const attrs = {
    firstName,
    lastName,
  };

  return await client.register(email, password, attrs);
}

Note: Any specified attributes (attrs) will override any default configuration.

Example

Let's assume defaults for your login client were configured like the following:

const defaults = {
  client_id: '1234567890',
  flow: 'standard',
  flow_version: '1234567890',
  locale: 'en-US',
  redirect_uri: 'https://domain.com',
}

If for some reason you wanted to change the redirect uri you could do this:

async function register(firstName, lastName, email, password, redirectUri) {
  const attrs = {
    firstName,
    lastName,
    redirect_uri: redirectUri, // updates previously configured redirect uri
  }

  return await client.register(email, password, attrs);
}

API

The provided functions return Axios' default HTTP response. This allows for flexibility in handling errors how you please. You can see an example below.

Register

Creates new user entity in Janrain

client.register(emailAddress, password, attrs = {})

Login

Get access token for existing entity. Redirect URI must match previously provided value. If you're configuring it to a default value, you can ignore this.

client.login(emailAddress, password, redirectUri = "")

Update Profile

Updates user profile associated with access token

client.updateProfile(attrs, token)

Is something not working? See something that isn't yet supported?

Please open an issue in Github or submit a pull request :)

Example

This code sample is used to work around Janrain rate limiting.

const promiseRetry = require('promise-retry');

const client = new Janrain(config, options);

const register = (user) => {
  const { firstName, lastName, email, password, phone } = user;

  return new Promise((resolve, reject) => {
    client.register(email, password, { firstName, lastName, phone }).then((resp) => {
      const { stat: status, error } = resp.data;

      if (status === 'error' && error === 'invalid_form_fields') {
        // For our use case let's assume this error an attempt to create
        // an account that exists. Do not reject here.
        console.log(`Account with email ${ email } already exists.`);
      } else if (status === 'error') {
        // Reject and retry.
        reject(`Error: ${resp.data.error} Reason: ${resp.data.error_description}`);
      }

      resolve();
    }).catch((e) => {
      reject(e);
    });
  });
};

module.exports.registerWithRetry = (user) => {
  return promiseRetry(function (retry, number) {
    console.log(`Attempt: ${ number }`)
    return register(user).catch((err) => {
      console.log(err);
      retry();
    });
  }, { retries: 100, minTimeout: 60000 });
}
0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago