--- title: useGenerateUserToken description: |- The `useGenerateUserToken` hook generates a temporary token for authenticating the current user with your backend. This token can be verified using the [`userTokenVerify`](/docs/api/shop-minis/minis-admin-api/mutations/usertokenverify) mutation to obtain a permanent user identifier. See [Verifying requests](/docs/api/shop-minis/network-requests#verifying-requests) for implementation details. > Note: Some common use cases are: authenticating API requests to your backend, identifying users for personalized experiences, securely linking Shop users to your application's user database. > Note: This hook optionally uses the following scope(s) when declared in the manifest: `openid` > > For more details, see [manifest.json](/docs/api/shop-minis/manifest-file). api_name: shop-minis source_url: html: https://shopify.dev/docs/api/shop-minis/hooks/user/usegenerateusertoken md: https://shopify.dev/docs/api/shop-minis/hooks/user/usegenerateusertoken.md --- # use​Generate​User​Token The `useGenerateUserToken` hook generates a temporary token for authenticating the current user with your backend. This token can be verified using the [`userTokenVerify`](https://shopify.dev/docs/api/shop-minis/minis-admin-api/mutations/usertokenverify) mutation to obtain a permanent user identifier. See [Verifying requests](https://shopify.dev/docs/api/shop-minis/network-requests#verifying-requests) for implementation details. **Note:** Some common use cases are: authenticating API requests to your backend, identifying users for personalized experiences, securely linking Shop users to your application\'s user database. **Note:** This hook optionally uses the following scope(s) when declared in the manifest: \openid\\

\

For more details, see \manifest.json\. ## use​Generate​User​Token() ### Returns * **UseGenerateUserTokenReturns** ### ### UseGenerateUserTokenReturns * **generateUserToken** **() => Promise<{ data: GeneratedTokenData; userErrors?: UserTokenGenerateUserErrors\[]; }>** Generates a temporary token for the user. Tokens are cached in memory and reused if still valid (with a 5-minute expiry buffer). A new token is automatically generated when the cached token is expired or missing. ### UseGenerateUserTokenReturns * generateUserToken Generates a temporary token for the user. Tokens are cached in memory and reused if still valid (with a 5-minute expiry buffer). A new token is automatically generated when the cached token is expired or missing. ```ts () => Promise<{ data: GeneratedTokenData; userErrors?: UserTokenGenerateUserErrors[]; }> ``` ### GeneratedTokenData * expiresAt The expiration time of the token. ```ts ISO8601DateTime | null ``` * token A temporary token for the user. ```ts string | null ``` * userState Whether the user is verified or a guest. ```ts UserState | null ``` ### ISO8601DateTime ```ts string ``` ### UserState * GUEST ```ts GUEST ``` * VERIFIED ```ts VERIFIED ``` ### UserTokenGenerateUserErrors * code ```ts UserTokenGenerateUserErrorCode ``` * field ```ts string[] | null ``` * message ```ts string ``` ### UserTokenGenerateUserErrorCode * MINI\_NOT\_FOUND ```ts MINI_NOT_FOUND ``` * USER\_NOT\_FOUND ```ts USER_NOT_FOUND ``` Examples ### Examples * #### Example code ##### Default ```tsx import {useCallback} from 'react' import {useGenerateUserToken, Button} from '@shopify/shop-minis-react' export default function MyComponent() { const {generateUserToken} = useGenerateUserToken() const performRequest = useCallback(async () => { const {data} = await generateUserToken() const {token, expiresAt, userState} = data console.log({token, expiresAt, userState}) }, [generateUserToken]) return