Cacheable token interceptor for oauth requests with axios
npm install @scienta/axios-oauth2ts
import axios from 'axios';
import {clientFactory} from '@scienta/axios-oauth';
const client = clientFactory(axios.create(), {
url: 'https://oauth.com/2.0/token',
grant_type: 'client_credentials',
client_id: 'foo',
client_secret: 'bar',
scope: 'baz'
});const auth = await client(); // => { "access_token": "...", "expires_in": 900, ... }
`$3
`ts
import axios from 'axios';
import {clientFactory, interceptorFactory} from '@scienta/axios-oauth';
const axiosInstance = axios.create();
axiosInstance.interceptors.request.use(
interceptorFactory(clientFactory(axiosInstance, {
url: 'https://oauth.com/2.0/token',
grant_type: 'client_credentials',
client_id: 'foo',
client_secret: 'bar',
scope: 'baz'
}))
);
axiosInstance.get('https://oauth.com/2.0/protectedResource')
`$3
`ts
import axios from 'axios';
import {clientFactory, interceptorFactory, LockingTokenCache} from '@scienta/axios-oauth';const axiosInstance = axios.create();
axiosInstance.interceptors.request.use(
interceptorFactory(
clientFactory(axiosInstance, {
url: 'https://oauth.com/2.0/token',
grant_type: 'client_credentials',
client_id: 'foo',
client_secret: 'bar',
scope: 'baz'
}),
new LockingTokenCache()
)
);
axiosInstance.get('https://oauth.com/2.0/protectedResource')
`Locking cache (used by LockingTokenCache)
The LockingTokenCache` class uses a separate library for locking and caching.