ExShopifyApp.AccessToken (ex_shopify_app v1.0.0)
Access token management.
Exchanges session tokens for offline/online access tokens and refreshes expiring
offline access tokens. Returns ExShopifyApp.AccessToken.Token structs carrying the
full expiry metadata.
Docs:
Summary
Functions
Exchange a session token for an access token.
Refresh an expiring offline access token using its refresh token.
Functions
@spec client(shop()) :: Tesla.Client.t()
@spec fetch(shop(), String.t(), keyword()) :: {:ok, ExShopifyApp.AccessToken.Token.t()} | {:error, term()}
Exchange a session token for an access token.
By default an expiring offline token is requested (Shopify is replacing lifetime
tokens with expiring ones). Pass expiring: false to request a legacy lifetime token.
Options
:type-:offline(default) or:online:expiring- request an expiring token (defaulttrue)
@spec refresh(shop(), String.t()) :: {:ok, ExShopifyApp.AccessToken.Token.t()} | {:error, term()}
Refresh an expiring offline access token using its refresh token.
Both the access token and the refresh token are regenerated; the previous refresh
token is invalidated, so the returned token's refresh_token must be persisted.
This function only performs the HTTP exchange and decides nothing about persistence
or locking. Concurrent refreshes for the same shop would invalidate each other — use
ExShopifyApp.AccessToken.Repo (or another ExShopifyApp.AccessToken.Store) to
serialize and durably persist them.