OAuth 2.0 client utils for axios
Switch branches/tags
Nothing to show
Clone or download
Latest commit ea23ded Oct 5, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Initial commit Sep 22, 2018
tests Fix timing bug in interceptor tests Oct 5, 2018
.gitignore Initial commit Sep 22, 2018
.npmignore Initial commit Sep 22, 2018
.travis.yml Initial commit Sep 22, 2018
LICENSE Initial commit Sep 22, 2018
README.md docs(readme): add Greenkeeper badge Sep 22, 2018
package-lock.json 1.1.1 Oct 5, 2018
package.json 1.1.1 Oct 5, 2018

README.md

axios-oauth-client

Build Status Greenkeeper badge

OAuth 2.0 client utils for axios

Installation

$ npm install --save axios-oauth-client axios-token-interceptor axios

Axios OAuth 2.0 Client

Authorization Code grant

const axios = require('axios');
const oauth = require('axios-oauth-client');
const getAuthorizationCode = oauth.client(axios.create(), {
  url: 'https://oauth.com/2.0/token',
  grant_type: 'authorization_code',
  client_id: 'foo',
  client_secret: 'bar',
  redirect_uri: '...',
  code: '...',
  scope: 'baz',
});

const auth = await getAuthorizationCode(); // => { "access_token": "...", "expires_in": 900, ... }

Owner Credentials grant

const axios = require('axios');
const oauth = require('axios-oauth-client');
const getOwnerCredentials = oauth.client(axios.create(), {
  url: 'https://oauth.com/2.0/token',
  grant_type: 'password',
  client_id: 'foo',
  client_secret: 'bar',
  username: 'asdf',
  password: 'yuio',
  scope: 'baz'
});

const auth = await getOwnerCredentials(); // => { "access_token": "...", "expires_in": 900, ... }

Client Credentials grant

const axios = require('axios');
const oauth = require('axios-oauth-client');
const getClientCredentials = oauth.client(axios.create(), {
  url: 'https://oauth.com/2.0/token',
  grant_type: 'client_credentials',
  client_id: 'foo',
  client_secret: 'bar',
  scope: 'baz'
});

const auth = await getClientCredentials(); // => { "access_token": "...", "expires_in": 900, ... }

Refresh Token grant

const axios = require('axios');
const oauth = require('axios-oauth-client');
const getRefreshToken = oauth.client(axios.create(), {
  url: 'https://oauth.com/2.0/token',
  grant_type: 'refresh_token',
  client_id: 'foo',
  client_secret: 'bar',
  refresh_token: '...',
  scope: 'baz'
});

const auth = await getRefreshToken(); // => { "access_token": "...", "refresh_token": "...", "expires_in": 900, ... }

Axios OAuth 2.0 Authentication interceptor

const axios = require('axios');
const oauth = require('axios-oauth-client');
const tokenProvider = require('axios-token-interceptor');

const getOwnerCredentials = oauth.client(axios.create(), {
  // see example above
})

const instance = axios.create();
instance.interceptors.request.use(
  // Wraps axios-token-interceptor with oauth-specific configuration,
  // fetches the token using the desired claim method, and caches
  // until the token expires
  oauth.interceptor(tokenProvider, getOwnerCredentials)
);

License

MIT