@netology-group/account
v2.5.1
Published
account client
Downloads
28
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) interface
Modes
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_token
will 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 */})