@netology-group/account
v2.5.1
Published
account client
Readme
Account client
How to use
Import module
import { Account, IdP as Provider } from 'account'Initialize
const config = {
label: '<account_label>'
}
const provider = new Provider({
endpoint: 'http://domain.name'
})
// You can write your own provider or use default IdP provider
const account = new Account(config, provider, window.localStorage)
// You can bypass any storage provider which implements [Provider](./src/identity-provider.js.flow#14) interfaceModes
Account supports two modes: id & label.
These modes are pretty the same. Main difference is that in id mode Account uses audience suffix at any request.
Clarify label
id & label modes require a label to be known. But you actually may not.
There is special fetchLabel method which allows to request actual label for the account.
It uses me placeholer for the request's URL. For instance:
Account.fetchLabel(
{ refresh_token: '<token>' },
new IdP(/* idp config */),
/* here you may use your own placeholder. `me` by default */
).then(({ id: acc_label }) => {
/* do stuff here */
})Request access token
access_tokenwill be automatically refreshed if applicable.
account.tokenData()
.then((_: /*: TokenData */) => { /* do something */ })Revoke refresh token
account.revokeRefreshToken()
.then((_: /*: TokenData */) => { /* do something */ })Store token
const tokenData /*: TokenData */ = {}
account
.store(tokenData)
.then((_ /*: TokenData */) => { /* do something */ })Load token
account
.load()
.then((_ /*: TokenData */) => { /* do something */ })Remove token
account
.remove()
.then((_ /*: TokenData */) => { /* do something */ })Utilities
TokenProvider
TokenProvider is used to provide an interface to access the valid token on each request. Valid refresh_token is needed to initialize TokenProvider properly.
const { Account, TokenProvider } = Account
const account = new Account(/* proper configuration */)
let provider = new TokenProvider({ refresh_token: '<refresh_token>' }, account)
// or
provider = new TokenProvider({ refresh_token: '<refresh_token>' })
provider
.iEngine(account)
.initialize()
provider.token().then(access_token => {/* do smth */})